Tampilan Header Tabel di StoryBoards

191

Apakah ada cara untuk menyisipkan Table Header View (tableHeaderView) di StoryBoard (seperti yang biasa kami lakukan di Interface Builder)?

Tyler DeWitt
sumber

Jawaban:

349

Sepertinya seseorang hanya menarik kontrol ke bagian atas tampilan tabel. Saya tidak berharap itu semudah itu.

Sebelum Jatuhkan

Sebelum Jatuhkan

Setelah Drop

Setelah Drop

Tuan Rogers
sumber
29
Saya terkejut menemukan bahwa ini adalah cara melakukannya. Saya perhatikan dalam implementasi saya bahwa agar ini berfungsi dengan benar saya harus menghapus kode bagian heightForHeaderInSection: (NSInteger) saya kalau tidak, saya akan berakhir dengan ruang ekstra di atas tampilan header itu sendiri. Juga, agar tajuk ini "menempel" di bagian atas tampilan tabel, saya harus mengimplementasikan bagian viewForHeaderInSection: (NSInteger) dan mengembalikan tampilan ini.
ozz
13
Ini hanya berfungsi jika Anda memiliki setidaknya satu sel prototipe di tabel.
Accatyyc
4
@do, bisakah Anda menguraikan bagaimana Anda bisa membuat tajuk "menempel" di bagian atas tampilan tabel? Saya mencoba menerapkan secara membabi buta viewForHeaderInSection:dan saya mendapat kesalahan mengatakan "Tidak dapat secara bersamaan memenuhi kendala". (Lihat pertanyaan saya di sini: stackoverflow.com/questions/14554051/… )
ryanrhee
2
Terima kasih, saya tidak bisa melakukan itu sampai saya tahu itu akan berhasil, diperlukan drag presisi. Saya sudah mencoba melakukan itu berkali-kali ...
Dave Ross
1
Anda bisa menggunakan garis besar di sebelah kiri untuk melakukan penyeret, yang lebih mudah dilakukan daripada mencoba menekan tempat yang tepat di atas sel prototipe pertama, jika Anda ingin mengatur tampilan header tabel. Saya perhatikan - mungkin bug Xcode (5.0) - bahwa ini hanya akan berfungsi ketika saya telah memindahkan tampilan dari hierarki biasa terlebih dahulu; Saya menyeretnya sampai ke bagian bawah garis besar untuk adegan itu. Kemudian, pada langkah ke-2, saya bisa memindahkannya ke tampilan tabel.
Daniel Schneller
10

Anda dapat melakukan ini dengan mudah dengan menyeret UIView/ UIImageViewtepat di bawah UITableViewgaris besar dokumen (bukan tata letak).

Jika Anda mencoba menyeret tata letak alih-alih garis besar dokumen, UITableViewCellakan melompat ke penanganan atas yang membuat frustrasi!

VERMA PANKAJ
sumber
-2

Menyeret dan menjatuhkan tampilan di atas tampilan tabel hanya berfungsi untuk satu ukuran layar, setidaknya dalam Xcode 11. Ukurannya tidak baik pada layar yang berbeda.

Saya baru saja membuat tampilan dan meninggalkannya di belakang meja di storyboard. Saya membuat IBOutlet untuk itu:

@IBOutlet weak var audioView: UIView!

Kemudian dalam kode tableview yang saya lakukan:

func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
    return audioView
}

func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
    return 142
}

Ini bekerja dengan baik pada semua ukuran layar.

Badr
sumber
1
Pertanyaannya adalah tentang tampilan header tabel, bukan tampilan header bagian.
R. Rincón
@R. Rincón, Di mana saya menyebutkan tajuk bagian? Bagian dalam metode diperlukan dari kerangka kerja. Setiap TableView memiliki setidaknya satu bagian jika Anda tidak tahu itu. Lewati saja bagian 0 Jika Anda tidak memiliki bagian.
Badr
Kode ini mengembalikan audioView untuk setiap bagian sebagai header bagian. Jika seseorang mengimplementasikan ini, tableView.tableHeaderView akan menjadi nol. Jika mereka memiliki 5 bagian, mereka akan memiliki lima bagian header. Jika mereka sudah memiliki header bagian dan ingin menambahkan tampilan header tabel, jawaban ini tidak membantu mereka. Ini tidak menjawab pertanyaan, yang secara khusus menyebutkan tableHeaderView.
R. Rincón
Anda dapat menentukan tampilan header untuk setiap bagian dengan beberapa logika di dalam metode. TableViews dibangun dengan bagian-bagian dalam pikiran. Anda selalu memiliki bagian, jika tidak, maka itu akan menjadi bagian 0. Tidak ada metode untuk menentukan tampilan header tanpa menentukan bagian.
Badr