objective-c - UITableViewDataSource中的cellForRowAtIndexPath如何实现?
高洛峰
高洛峰 2017-04-21 10:58:06
0
2
638

在controller中delegate了UITableViewDataSource以后,是必须实现这个方法以展示UITableView的。它的方法原型如下

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

能否结合例子具体解释下NSIndexPath的含义,另外与它想对应的还有一个必须实现的方法

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section

这个section表示的又是什么呢?

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

membalas semua(2)
PHPzhong

Mula-mula terangkan susun atur TableView Kandungan TableView adalah dua peringkat, Bahagian dan Baris dalam Bahagian Paparan yang sepadan dengan setiap Baris menjadi TableViewCell. Ambil settings.app sebagai contoh, seperti yang ditunjukkan di bawah:

Terdapat dua Bahagian
dalam gambar Terdapat 6 Baris dalam Bahagian 0 -- Mod Pesawat~Operator
Anda boleh melihat 3 Baris dalam Bahagian 1 -- Bunyi ~ Desktop

Mari kita bincangkan tentang dua kaedah dalam soalan.

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath;

Kaedah ini mengembalikan sel tertentu, yang boleh dipaparkan dalam pelbagai gaya tersuai atau dipaparkan dalam beberapa gaya lalai.
IndexPath menandakan lokasi sel yang anda ingin buat. Terdapat dua atribut dalam objek indexPath, bahagian dan baris Seperti namanya, anda boleh mencari sel tertentu.
Nota: Kaedah ini akan dipanggil apabila sel muncul pada skrin, dan ia akan dipanggil sekali jika ia tidak muncul sekali. Kerana objek sel dikitar semula apabila kawasan yang kelihatan pada skrin hilang, dan digunakan semula untuk sel lain yang muncul dalam kawasan yang kelihatan. Oleh itu, apabila memaparkan sel dalam kaedah ini, sebaiknya gunakan gelung for atau sesuatu untuk membersihkan sel.

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section

Kaedah ini dipanggil apabila TableView dijana (atau apabila reloadData dipanggil pada objek tableView) dan mengembalikan bilangan baris (sel) dalam bahagian tertentu.
Sebagai contoh, dalam antara muka settings.app, ia sepatutnya

switch (seciton) {
    0 :
        return 6;
    1 :
        return 3;
}
return 0;
洪涛

1. NSIndexPath terutamanya termasuk (NSUInteger)section dan (NSUInteger)row Setiap row mesti dimiliki oleh section, jika tidak row ini menunjukkan setiap satu - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section Berapa banyak section ada ke? row 2. Buka
, tajuk A, B, C... dalam adalah milik Contacts dan section header membentuk header + rows + footer yang lengkap Anda boleh menyesuaikan pengepala dan pengaki melalui section Serupa dengan - (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section;

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan