在使用 UITableView 進行某設定頁面的設計時,由於設計頁面有固定的section個數和row個數,而資料又需要根據使用者的修改情況進行改變,所以我們往往不會為每個cell單獨寫一個類,而是直接對 contentView 添加子試圖,如:
[cell.contentView addSubview:contentLab];
詳細:
static NSString *Identifier = @"dentifier0"; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:Identifier]; UILabel *titleLab,*contentLab; if (cell == nil) { cell = [[UITableViewCell alloc] initWithStyle: UITableViewCellStyleDefault reuseIdentifier:Identifier]; contentLab = [[UILabel alloc]initWithFrame:CGRectMake(100, 10, 100, 20)]; contentLab.backgroundColor = [UIColor clearColor]; contentLab.textColor = [UIColor whiteColor]; [cell.contentView addSubview:contentLab]; } contentLab.text = @"測試"; return cell;
當我們在使用者操作後,執行單條重新整理語句
NSIndexPath *refresh_row = [NSIndexPath indexPathForRow:0 inSection:2]; NSArray *array = @[refresh_row]; [_tableView reloadRowsAtIndexPaths:array withRowAnimation:UITableViewRowAnimationAutomatic];
資料並沒有執行重新整理
原因:在cell !=nil 的時候contentLab==nil
解決方案:
在else 的時候為contentLab 賦值,找到cell中已經建立的Label
如下:
if (cell == nil) { cell = [[UITableViewCell alloc] initWithStyle: UITableViewCellStyleDefault reuseIdentifier:Identifier]; contentLab = [[UILabel alloc]initWithFrame:CGRectMake(100, 10, 100, 20)]; contentLab.backgroundColor = [UIColor clearColor]; contentLab.textColor = [UIColor whiteColor];contentLab.tag = 10000; [cell.contentView addSubview:contentLab];}else { contentLab = (UILabel*)[cell.contentView viewWithTag:10000]; }
ok,單條重新整理,完滿解決~!