検索

ホームページ  >  に質問  >  本文

objective-c - iOS 自定义tableView cell重用导致内容重复 问题 如何有效解决?急急急!!


 [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;
}
大家讲道理大家讲道理2772日前496

全員に返信(7)返信します

  • 迷茫

    迷茫2017-04-18 09:59:24

    Remove if (self.taskList.count >indexPath.row)
    セルの通常割り当て
    セルが増えたらテーブルを更新するか、新しい行を更新します

    返事
    0
  • 巴扎黑

    巴扎黑2017-04-18 09:59:24

    まず、所有するセルの数を確認する必要があります。次に、セルの概念はコンテナを再利用することです。

    返事
    0
  • 阿神

    阿神2017-04-18 09:59:24

    registerNib メソッドを使用してすでに登録されています。プロキシ メソッドでセルが空かどうかを判断する必要はありません。

    返事
    0
  • 高洛峰

    高洛峰2017-04-18 09:59:24

    これを (UITableViewCell )tableView:(UITableView )tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath プロキシ メソッドに記述します:

    リーリー

    返事
    0
  • PHP中文网

    PHP中文网2017-04-18 09:59:24

    セルの再利用。再利用は、セルの UIButtonUILabel など、再利用前の UIButton で強調表示された状態 UILabel である場合、再利用後は text=@"label" です。は強調表示されたままで、UIButtonUILabeltext のままで、label が再利用されるときに cell メソッドが呼び出されます。したがって、値と状態は一般に cellForRow で再割り当ておよび変更されます。したがって、セルには cellForRow というデフォルトのルールがあり、そうでない場合、セルはカオスになります。 如果有if 那一定要有else

    返事
    0
  • PHP中文网

    PHP中文网2017-04-18 09:59:24

    登録後、セルが空であるかどうかを判断する必要はありませんが、なぜカウントを判断する必要があるのか​​理解できません。 ?しかし、それはおそらくあなたの問題ではありません。セル上のコントロールが繰り返し追加されることを意味する場合、これはメソッドに問題がある可能性があります。ここでコントロールを作成して追加すると、再利用はデータを更新するだけです。つまり、割り当てプロセスのみがコントロールを作成しません

    返事
    0
  • 迷茫

    迷茫2017-04-18 09:59:24

    テーブルビューはあまり表示されません。再利用しないと、registerNib メソッドを呼び出した後は、メモリは常に純粋な CELL になります。

    返事
    0
  • キャンセル返事