Ini ada di iPhone 0S 2.0. Jawaban untuk 2.1 juga baik-baik saja, meskipun saya tidak mengetahui adanya perbedaan mengenai tabel.
Rasanya seperti mungkin untuk mendapatkan teks untuk dibungkus tanpa membuat sel khusus, karena UITableViewCell
mengandung secara UILabel
default. Saya tahu saya bisa membuatnya bekerja jika saya membuat sel khusus, tapi bukan itu yang saya coba capai - Saya ingin mengerti mengapa pendekatan saya saat ini tidak berhasil.
Saya telah menemukan bahwa label dibuat sesuai permintaan (karena sel mendukung akses teks dan gambar, sehingga tidak membuat tampilan data sampai diperlukan), jadi jika saya melakukan sesuatu seperti ini:
cell.text = @""; // create the label
UILabel* label = (UILabel*)[[cell.contentView subviews] objectAtIndex:0];
kemudian saya mendapatkan label yang valid, tetapi pengaturan numberOfLines
itu (dan lineBreakMode) tidak berfungsi - saya masih mendapatkan teks baris tunggal. Ada banyak ketinggian UILabel
untuk tampilan teks - Saya hanya mengembalikan nilai besar untuk ketinggian heightForRowAtIndexPath
.
sumber
Jawaban Tim Rupe yang diperbarui untuk iOS7:
sumber
Komentar / jawaban singkat untuk mencatat pengalaman saya ketika saya memiliki masalah yang sama. Meskipun menggunakan contoh kode, ketinggian sel tampilan tabel menyesuaikan, tetapi label di dalam sel masih tidak menyesuaikan dengan benar - solusinya adalah saya memuat sel dari file NIB khusus, yang terjadi setelah tinggi sel disesuaikan.
Dan saya memiliki pengaturan di dalam file NIB untuk tidak membungkus teks, dan hanya memiliki 1 baris untuk label; pengaturan file NIB mengesampingkan pengaturan yang saya sesuaikan di dalam kode.
Pelajaran yang saya ambil adalah untuk memastikan untuk selalu mengingat bagaimana keadaan objek pada setiap titik waktu - mereka mungkin belum diciptakan! ... hth seseorang di telepon.
sumber
Jika kita hanya ingin menambahkan teks dalam
UITableView
sel, kita hanya perlu dua delegasi untuk bekerja (tidak perlu menambahkan ekstraUILabels
)1)
cellForRowAtIndexPath
2)
heightForRowAtIndexPath
Solusi ini bekerja untuk saya: -
Di sini string
mutArr
adalah array yang bisa berubah dari mana saya mendapatkan data saya.EDIT: - Berikut ini adalah array yang saya ambil.
sumber
Sekarang tampilan tabel dapat memiliki sel ukuran sendiri. Atur tampilan tabel sebagai berikut
tableView.estimatedRowHeight = 85.0 //use an appropriate estimate tableView.rowHeight = UITableViewAutomaticDimension
Referensi Apple
sumber
Saya menggunakan solusi berikut.
Data disediakan secara terpisah di anggota:
Penanganan dapat dengan mudah dilakukan di
cellForRowAtIndexPath
. Tentukan sel / tentukan font dan berikan nilai-nilai ini ke "sel" hasil. Perhatikan bahwanumberoflines
diatur ke "0", yang berarti mengambil apa yang diperlukan.Dalam
heightForRowAtIndexPath
, saya menghitung ketinggian teks yang dibungkus. Ukuran boding harus terkait dengan lebar sel Anda. Untuk iPad ini adalah 1024. Untuk iPhone dan iPod 320.sumber
Saya menemukan ini sangat sederhana dan mudah:
untuk misalnya:
Ini mungkin atau mungkin bukan pendekatan terbaik / standar untuk melakukannya, tetapi itu berhasil dalam kasus saya.
sumber
Coba kode saya dengan cepat. Kode ini juga akan berfungsi untuk label UIL normal.
Sekarang panggil saja seperti ini
sumber
Saya pikir ini adalah solusi yang lebih baik dan lebih pendek. Cukup format
UILabel
(textLabel
) sel untuk menghitung ketinggian secara otomatis dengan menentukansizeToFit
dan semuanya akan baik-baik saja.sumber
Saya tidak berpikir Anda dapat memanipulasi basis
UITableViewCell's
pribadiUILabel
untuk melakukan ini. Anda bisa menambahkan baruUILabel
ke sel sendiri dan menggunakannumberOfLines
dengansizeToFit
ukuran dengan tepat. Sesuatu seperti:sumber