Saya ingin menyesuaikan UITableView
header untuk setiap bagian. Sejauh ini, saya sudah menerapkan
-(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
UITabelViewDelegate
metode ini . Yang ingin saya lakukan adalah mendapatkan tajuk saat ini untuk setiap bagian dan hanya menambahkanUILabel
sebagai subview.
Sejauh ini, saya tidak dapat mencapai itu. Karena, saya tidak dapat menemukan apa pun untuk mendapatkan tajuk bagian default. Pertanyaan pertama, apakah ada cara untuk mendapatkan header bagian standar ?
Jika tidak memungkinkan, saya harus membuat tampilan wadah yang merupakan UIView
tetapi, kali ini saya perlu mengatur warna latar belakang default, warna bayangan dll. Karena, jika Anda melihat dengan cermat ke header bagian, itu sudah disesuaikan.
Bagaimana saya bisa mendapatkan nilai-nilai default ini untuk setiap header bagian?
Terima kasih semua.
sumber
tableView:titleForHeaderInSection:
?NSString
, saya perlu mengatur font kustom jadi, saya tidak bisa jika saya menggunakantableView:titleForHeaderInSection:
Jawaban:
Anda dapat mencoba ini:
sumber
Jawaban yang dipilih menggunakan
tableView :viewForHeaderInSection:
benar.Hanya untuk membagikan tip di sini.
Jika Anda menggunakan storyboard / xib, maka Anda dapat membuat sel prototipe lain dan menggunakannya untuk "sel bagian" Anda. Kode untuk mengonfigurasi tajuk mirip dengan cara Anda mengonfigurasi sel baris.
sumber
viewForHeaderInSection
bukancanEditRowAtIndexPath
seperti yang Anda sebutkan. Saya tidak pernah memverifikasi kerusakan yang Anda katakan, tetapi bisakah Anda mencerahkan berapa lama pers akan menyebabkan kerusakan?UITableViewCell
sebagai tampilan tajuk. Anda akan sangat sulit untuk men-debug gangguan visual - tajuk terkadang akan hilang karena bagaimana sel dikosongkan dan Anda akan mencari berjam-jam mengapa begitu sampai Anda menyadariUITableViewCell
tidak termasuk dalamUITableView
tajuk.UITableViewCell
sebagai tajuk sama sekali salah.Versi cepat jawaban Lochana Tejas :
sumber
override
kunci tersebut berlebihan. Terlebih lagi, pertimbangkan untuk menggunakan kembali tampilan tajuk daripada membuatnya kembali.Jika Anda menggunakan tampilan tajuk default, Anda hanya dapat mengubah teks dengannya
Untuk Swift:
Jika Anda ingin menyesuaikan tampilan, Anda perlu membuat yang baru sendiri.
sumber
mengapa tidak menggunakan UITableViewHeaderFooterView ?
sumber
Jika headerInSection tidak ditampilkan, dapat mencoba ini.
Ini mengembalikan ketinggian untuk tajuk bagian tertentu.
sumber
Swift 3 versi jawaban lochana dan estemendoza:
Perlu diketahui juga bahwa Anda JUGA harus menerapkan:
sumber
Coba ini......
sumber
Jawaban lain melakukan pekerjaan yang baik untuk menciptakan kembali tampilan header default, tetapi tidak benar-benar menjawab pertanyaan utama Anda:
Ada cara - hanya menerapkan
tableView:willDisplayHeaderView:forSection:
di delegasi Anda. Tampilan tajuk default akan diteruskan ke parameter kedua, dan dari sana Anda dapat melemparkannya ke aUITableViewHeaderFooterView
dan kemudian menambahkan / mengubah subview sesuai keinginan.Obj-C
Cepat
sumber
view
.sumber
Ini adalah solusi termudah yang mungkin. Kode berikut dapat digunakan secara langsung untuk membuat header bagian kustom.
CATATAN: SectionHeaderTableViewCell adalah UITableViewCell khusus yang dibuat di Storyboard.
sumber
Jika saya jadi Anda, saya akan membuat metode yang mengembalikan UIView diberi NSString untuk mengandung. Sebagai contoh
Dalam implementasi metode ini, buat UIView, tambahkan label UIL ke dalamnya dengan properti yang ingin Anda atur, dan tentu saja tentukan judulnya untuk yang diberikan.
sumber
solusi @ samwize di Swift (jadi upvote dia!). Brilliant menggunakan mekanisme daur ulang yang sama juga untuk bagian header / footer:
sumber
Jika Anda ingin mengubah font dari textLabel di bagian header Anda, Anda ingin melakukannya di willDisplayHeaderView. Untuk mengatur teks, Anda dapat melakukannya di viewForHeaderInSection atau titleForHeaderInSection. Semoga berhasil!
sumber
Contoh 2019 lengkap untuk menyalin dan menempel
Set pertama "Dikelompokkan" di storyboard: itu harus terjadi pada waktu init, Anda tidak dapat benar-benar mengaturnya nanti, jadi lebih mudah untuk mengingatnya di storyboard:
Lanjut,
Harus menerapkan heightForHeaderInSection karena bug Apple.
Masih ada bug Apple - selama sepuluh tahun sekarang - di mana ia tidak akan menampilkan header pertama (yaitu, indeks 0) jika Anda tidak memiliki
heightForHeaderInSection
panggilan.Jadi,
tableView.sectionHeaderHeight = 70
tidak berfungsi, itu rusak .Mengatur bingkai tidak menghasilkan apa-apa:
Di
viewForHeaderInSection
cukup membuat UIView ().Tidak ada gunanya / mencapai apa-apa jika Anda UIView (bingkai ...) karena iOS hanya menetapkan ukuran tampilan yang ditentukan oleh tabel.
Jadi baris pertama
viewForHeaderInSection
akan sederhanalet view = UIView()
dan itu adalah tampilan yang Anda kembalikan.Itu saja - hal lain adalah pemborosan waktu.
Masalah Apple "rewel" lainnya.
Ekstensi kenyamanan yang digunakan di atas adalah:
sumber
Secara ajaib tambahkan Table View Header dengan cepat
Baru-baru ini saya mencoba ini.
Saya membutuhkan satu dan hanya satu header di seluruh UITableView.
Seperti saya menginginkan UIImageView di bagian atas TableView. Jadi saya menambahkan UIImageView di atas UITableViewCell dan secara otomatis ditambahkan sebagai tableViewHeader. Sekarang saya menghubungkan ImageView ke ViewController dan menambahkan Image.
Saya bingung karena saya melakukan sesuatu seperti ini untuk pertama kalinya. Jadi untuk menghapus kebingungan saya, buka format xml dari MainStoryBoard dan temukan Image View ditambahkan sebagai header.
Ini berhasil untuk saya. Terima kasih xCode dan cepat.
sumber
panggil metode delegasi ini
ini akan memberi kesempatan untuk secara otomatis menambahkan header default dengan judul dinamis.
Anda dapat menggunakan header / footer yang dapat digunakan kembali dan dapat disesuaikan.
https://github.com/sourov2008/UITableViewCustomHeaderFooterSection
sumber
swif 4.2
sumber
selain untuk titleForHeaderInSection, Anda cukup mengubah tampilan header, footer. periksa komentar saya di sini: Ubah bagian UITable backgroundColor tanpa kehilangan Judul bagian
sumber
Jika Anda hanya ingin menambahkan judul ke header tableView jangan tambahkan tampilan. Di swift 3.x kodenya seperti ini:
Anda dapat menerapkan array untuk mengambil judul untuk header.
sumber
Kembali ke pertanyaan awal (4 tahun kemudian), alih-alih membangun kembali tajuk bagian Anda sendiri, iOS dapat langsung memanggil Anda (dengan willDisplayHeaderView: forSection :) tepat setelah dibuat yang standar. Misalnya, saya ingin menambahkan tombol grafik di tepi kanan header bagian:
sumber
Gunakan
tableView: willDisplayHeaderView:
untuk menyesuaikan tampilan ketika akan ditampilkan.Ini memberi Anda keuntungan karena dapat mengambil tampilan yang sudah dibuat untuk tampilan header dan memperluasnya, daripada harus membuat ulang seluruh tampilan header sendiri.
Berikut adalah contoh yang mewarnai bagian header berdasarkan BOOL dan menambahkan elemen teks detail ke header.
sumber
Cepat 4.2
Dalam Swift 4.2 nama tabel sedikit berubah.
sumber