[英]UITableView reusable custom cells show wrong content in subviews
[英]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.