Saya memiliki tableview
, di mana kadang-kadang mungkin tidak ada hasil apa pun untuk dicantumkan , jadi saya ingin memasang sesuatu yang mengatakan "tidak ada hasil" jika tidak ada hasil (baik label atau sel tampilan tabel satu?).
Apakah ada cara termudah untuk melakukan ini?
Saya akan mencoba di label
belakang tableview
lalu menyembunyikan salah satu dari dua berdasarkan hasil, tetapi karena saya bekerja dengan a TableViewController
dan bukan normal, ViewController
saya tidak yakin seberapa pintar atau bisa dilakukan itu.
Saya juga menggunakan Parse
dan subclassing sebagai PFQueryTableViewController
:
@interface TableViewController : PFQueryTableViewController
Saya dapat memberikan detail tambahan yang diperlukan, beri tahu saya!
TableViewController
Adegan di Storyboard:
EDIT: Per Midhun MP, berikut kode yang saya gunakan
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
NSInteger numOfSections = 0;
if ([self.stringArray count] > 0)
{
self.tableView.separatorStyle = UITableViewCellSeparatorStyleSingleLine;
numOfSections = 1;
//yourTableView.backgroundView = nil;
self.tableView.backgroundView = nil;
}
else
{
UILabel *noDataLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, self.tableView.bounds.size.width, self.tableView.bounds.size.height)];
noDataLabel.text = @"No data available";
noDataLabel.textColor = [UIColor blackColor];
noDataLabel.textAlignment = NSTextAlignmentCenter;
//yourTableView.backgroundView = noDataLabel;
//yourTableView.separatorStyle = UITableViewCellSeparatorStyleNone;
self.tableView.backgroundView = noDataLabel;
self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
}
return numOfSections;
}
Dan inilah Tampilan yang saya dapatkan, masih memiliki garis pemisah. Saya merasa ini adalah beberapa perubahan kecil, tetapi saya tidak yakin mengapa garis pemisah muncul?
numberOfSections
harus mengembalikan hitungan dan hanya itu. Sama untuknumberOfRowsInSection
. Ini dapat dipanggil berkali-kali kapan saja. Jangan pernah memperbarui tampilan atau memperbarui data atau melakukan apa pun kecuali mengembalikan hitungan. Logika untuk memperbarui tampilan tidak boleh dalam metode ini.Jawaban:
Anda dapat dengan mudah mencapainya dengan menggunakan
backgroundView
propertiUITableView
.Tujuan C:
Cepat:
Referensi Referensi Kelas UITableView
sumber
tableView
keluar agar saya dapat melakukannyayourTableView.backgroundView
? Saya menggunakanTableViewController
jadi saya tidak memiliki outlet untuk itu sekarang, itu sebabnya saya bertanya-tanya.UITableViewController
sudah memiliki properti bernamatableView
jadi Anda tidak perlu membuatnyaself.tableView
numberOfSections
harus mengembalikan hitungan dan hanya itu. Sama untuknumberOfRowsInSection
. Ini dapat dipanggil berkali-kali kapan saja. Jangan pernah memperbarui tampilan atau memperbarui data atau melakukan apa pun kecuali mengembalikan hitungan. Logika untuk memperbarui tampilan tidak boleh dalam metode ini.Untuk Xcode 8.3.2 - Swift 3.1
Berikut adalah cara yang tidak terlalu terkenal tetapi sangat mudah untuk mencapai penambahan tampilan "Tidak Ada Item" ke tampilan tabel kosong yang kembali ke Xcode 7. Saya akan menyerahkannya kepada Anda untuk mengontrol logika yang menambahkan / menghapus tampilan ke tampilan latar belakang tabel, tetapi berikut adalah alur untuk dan storyboard Xcode (8.3.2):
Pada akhirnya ini berfungsi kapan saja Anda ingin menambahkan tampilan sederhana ke pengontrol tampilan yang tidak perlu Anda tampilkan segera, tetapi Anda juga tidak ingin memberikan kode tangan.
sumber
Versi Swift dari kode di atas: -
Tetapi Jika Anda sedang memuat Informasi Dari JSON, Anda perlu memeriksa apakah JSON kosong atau tidak, untuk itu jika Anda memasukkan kode seperti ini awalnya muncul Pesan "Tidak ada data" kemudian menghilang. Karena setelah tabel reload data pesan disembunyikan. Jadi Anda dapat meletakkan kode ini di mana memuat data JSON ke sebuah array. JADI: -
sumber
self.tableView.reloadData()
dipanggil? Saya telah menemukan bahwa itu menambahkan baris baru saya, tetapinoDataLabel
masih ditampilkan di bawahnya.self.tableView.backgroundView = nil
pernyataan if saya sebelumreturn jobs_list.count
berfungsi dengan baik. terima kasihnumberOfSections
harus mengembalikan hitungan dan hanya itu. Sama untuknumberOfRowsInSection
. Ini dapat dipanggil berkali-kali kapan saja. Jangan pernah memperbarui tampilan atau memperbarui data atau melakukan apa pun kecuali mengembalikan hitungan. Logika untuk memperbarui tampilan tidak boleh dalam metode ini.Anda dapat mencoba kontrol ini. Ini cukup rapi. DZNEmptyDataSet
Atau jika aku jadi kamu, yang akan kulakukan hanyalah
Sangat mudah
sumber
Swift 3 (diperbarui):
sumber
numberOfSections
harus mengembalikan hitungan dan hanya itu. Sama untuknumberOfRowsInSection
. Ini dapat dipanggil berkali-kali kapan saja. Jangan pernah memperbarui tampilan atau memperbarui data atau melakukan apa pun kecuali mengembalikan hitungan. Logika untuk memperbarui tampilan tidak boleh dalam metode ini.Swift3.0
Saya berharap itu server tujuan Anda ...... Dalam UITableViewController Anda.
Kelas Pembantu dengan fungsi:
sumber
numberOfSections
harus mengembalikan hitungan dan hanya itu. Sama untuknumberOfRowsInSection
. Ini dapat dipanggil berkali-kali kapan saja. Jangan pernah memperbarui tampilan atau memperbarui data atau melakukan apa pun kecuali mengembalikan hitungan. Logika untuk memperbarui tampilan tidak boleh dalam metode ini.Menurut saya cara paling elegan untuk menyelesaikan masalah Anda adalah beralih dari a
UITableViewController
ke aUIViewController
yang berisiUITableView
. Dengan cara ini Anda dapat menambahkan apapun yangUIView
Anda inginkan sebagai subview dari tampilan utama.Saya tidak akan merekomendasikan menggunakan UITableViewCell untuk melakukan ini, Anda mungkin perlu menambahkan hal-hal tambahan di masa mendatang dan segala sesuatunya bisa menjadi jelek dengan cepat.
Anda juga dapat melakukan sesuatu seperti ini, tetapi ini juga bukan solusi terbaik.
sumber
UIViewController
mengandungUITableView
.UITableViewController
diri saya sendiri, karena menggunakannya tidak jauh lebih mudah daripada melakukannya dengan cara lain, namun itu membatasi kemampuan Anda untuk mengubah banyak hal di masa depan.Gunakan kode ini dalam
numberOfSectionsInTableView
metode Anda : -sumber
numberOfSections
harus mengembalikan hitungan dan hanya itu. Sama untuknumberOfRowsInSection
. Ini dapat dipanggil berkali-kali kapan saja. Jangan pernah memperbarui tampilan atau memperbarui data atau melakukan apa pun kecuali mengembalikan hitungan. Logika untuk memperbarui tampilan tidak boleh dalam metode ini.SWIFT 3
sumber
Jika Anda tidak menggunakan footer tableview dan tidak ingin tableview mengisi layar dengan sel tabel default kosong, saya sarankan Anda menyetel footer tableview Anda ke UIView kosong. Saya tidak tahu sintaks yang benar untuk melakukan ini di obj-c atau Swift, tetapi di Xamarin.iOS saya akan melakukannya seperti ini:
Kode di atas akan menghasilkan tampilan tabel tanpa sel kosong
sumber
Inilah solusi yang berhasil untuk saya.
Tambahkan kode berikut ke file baru.
Ubah kelas tabel Anda menjadi kelas khusus "MyTableView" dari storyboard atau .xib
(ini hanya akan bekerja untuk bagian pertama. Jika Anda ingin menyesuaikan lebih banyak, lakukan perubahan dalam fungsi MyTableView reloadData () sesuai untuk bagian lain)
sumber
@IBInspectable var emptyStateText: String?
dan tandai kelas ini@IBDesignable
sehingga Anda akan dapat mengubah teks status kosong yang berbeda untuk adegan berbeda di storyboard atau xibs. Nikmati! :)Saya akan menyajikan tampilan hamparan yang memiliki tampilan dan pesan yang Anda inginkan jika tampilan tabel tidak memiliki hasil. Anda bisa melakukannya di ViewDidAppear, sehingga Anda memiliki hasil sebelum menampilkan / tidak menampilkan tampilan.
sumber
Jika Anda ingin melakukan ini tanpa kode apa pun, coba ini!
Klik pada tableView Anda.
Ubah gaya dari "biasa" menjadi "dikelompokkan".
Sekarang saat Anda menggunakan ....
tableView.backgroundView = MASUKKAN LABEL ATAU LIHAT ANDA
Ini tidak akan menampilkan pemisah!
sumber
Tambahkan kode ini dalam satu file dan ubah jenis koleksi Anda ke CustomCollectionView
sumber