[self.tableView registerNib:[UINib nibWithNibName:@"NewTaskCell" bundle:[NSBundle mainBundle]] forCellReuseIdentifier:NewTaskCellId];
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
NewTaskCell *cell = [self.tableView dequeueReusableCellWithIdentifier:NewTaskCellId forIndexPath:indexPath];
if (!cell) {
cell = [[NewTaskCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NewTaskCellId];
}
if (self.taskList.count > indexPath.row) {
FindDisOrderInfoEntity *entity = [self.taskList objectAtIndex:indexPath.row];
[cell setCellContentWith:entity];
}
return cell;
}
Remove if (self.taskList.count >indexPath.row)
セルの通常割り当て
セルが増えたらテーブルを更新するか、新しい行を更新します
まず、所有するセルの数を確認する必要があります。次に、セルの概念はコンテナを再利用することです。
registerNib メソッドを使用してすでに登録されています。プロキシ メソッドでセルが空かどうかを判断する必要はありません。
これを (UITableViewCell )tableView:(UITableView )tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath プロキシ メソッドに記述します:
リーリーセルの再利用。再利用は、セルの
UIButton
やUILabel
など、再利用前のUIButton
で強調表示された状態UILabel
である場合、再利用後はtext=@"label"
です。は強調表示されたままで、UIButton
のUILabel
はtext
のままで、label
が再利用されるときにcell
メソッドが呼び出されます。したがって、値と状態は一般にcellForRow
で再割り当ておよび変更されます。したがって、セルにはcellForRow
というデフォルトのルールがあり、そうでない場合、セルはカオスになります。如果有if 那一定要有else
登録後、セルが空であるかどうかを判断する必要はありませんが、なぜカウントを判断する必要があるのか理解できません。 ?しかし、それはおそらくあなたの問題ではありません。セル上のコントロールが繰り返し追加されることを意味する場合、これはメソッドに問題がある可能性があります。ここでコントロールを作成して追加すると、再利用はデータを更新するだけです。つまり、割り当てプロセスのみがコントロールを作成しません
テーブルビューはあまり表示されません。再利用しないと、registerNib メソッドを呼び出した後は、メモリは常に純粋な CELL になります。