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

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

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

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

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

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

高洛峰
高洛峰

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

répondre à tous(2)
PHPzhong

Expliquez d'abord la disposition de TableView. Le contenu d'un TableView est à deux niveaux, Section et Row in Section. La vue correspondant à chaque Row devient TableViewCell. Prenons settings.app comme exemple, comme indiqué ci-dessous :

Il y a deux sections
sur la photo Il y a 6 lignes dans la section 0 -- Mode avion ~ Opérateur
Vous pouvez voir 3 lignes dans la section 1 -- Son ~ Bureau

Parlons des deux méthodes dans la question.

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

Cette méthode renvoie une certaine cellule, qui peut être rendue dans différents styles personnalisés ou rendue dans plusieurs styles par défaut.
IndexPath marque l'emplacement de la cellule que vous souhaitez afficher. Il y a deux attributs dans l'objet indexPath, la section et la ligne, comme son nom l'indique, vous pouvez localiser une certaine cellule.
Remarque : Cette méthode sera appelée lorsqu'une cellule apparaît à l'écran, et elle sera appelée une fois si elle n'apparaît pas une fois. Car un objet cellule est recyclé lorsque la zone visible de l’écran disparaît, et est réutilisé pour d’autres cellules qui apparaissent dans la zone visible. Par conséquent, lors du rendu d'une cellule avec cette méthode, il est préférable d'utiliser une boucle for ou quelque chose pour nettoyer la cellule.

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

Cette méthode est appelée lorsque le TableView est généré (ou lorsque reloadData est appelé sur l'objet tableView) et renvoie le nombre de lignes (cellules) dans une certaine section.
Par exemple, dans l'interface settings.app, cela devrait être

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

1. NSIndexPath comprend principalement (NSUInteger)section et (NSUInteger)row Chaque row doit appartenir à un section, sinon ce row n'a aucun sens - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section indique chaque section Combien de y en a-t-il ? row 2. Ouvrez
, les titres A, B, C... à l'intérieur appartiennent à Contacts, et section header constitue un header + rows + footer complet. Vous pouvez personnaliser l'en-tête et le pied de page via section Semblable à

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal