簡體   English   中英

使自定義動態單元格不可在UITableView中重用

[英]Make custom dynamic cells NOT reusable in UITableView

我正在使用一個名為MessageCell的自定義UITableViewCell子類。

我像這樣初始化單元格:

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


    MessageCell *cell = [tableView dequeueReusableCellWithIdentifier:@"messageCell"];

    // more code

   return cell;

}

在每個自定義單元格中,都有一個用於標記該單元格的復選框。 標記單元格后,它將被添加到數組中,反之亦然。

盡管這在數據方面有效,但UI並未像應有的那樣反映它。 發生的是,除了標記的單元格外,其他單元格也被標記了。

我認為這種行為是由於單元的可重用性引起的,即當我將一個單元標記為選中狀態時,它具有一個公共指針,並且此屏幕位置中的所有將來單元都如此。

因此,我想使用“正常”的不可重用單元格。

所以我嘗試了:

  MessageCell *cell = [[MessageCell alloc] init];

要么:

  MessageCell *cell = [[MessageCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:nil];

但是它們都導致顯示空單元格。

您仍然想重用單元格! 只需檢查您的數據,然后在cellForRowAtIndexPath中將復選框設置為選中或取消選中即可:

MessageCell *cell = [tableView dequeueReusableCellWithIdentifier: @"messageCell"];

if (condition cell should be checked) //set the cells checkbox to checked
else //set the cells checkbox to unchecked

或類似的方法。

PS關於重新閱讀您的問題:您真的需要引用數組中的單元格嗎? 例如,您是否需要存儲indexPath並使用cellForRowAtIndexPath:如果需要從中創建一個單元格呢?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM