我的应用的“设置”页面出现问题。我选择使用静态单元格,所以我有几个表格部分,每个部分有3-4个单元格。
在viewDidLoad中我加载了我的NSUserDefaults并设置了这样的附件标记:
...
}
else if ( ... my Condition3 ... ) {
indexPath = [NSIndexPath indexPathForRow:2 inSection:0];
}
UITableViewCell* cell = [settingsTable cellForRowAtIndexPath:indexPath];
cell.accessoryType = UITableViewCellAccessoryCheckmark;
这样可以正常工作,并使用Checkmark将匹配设置设置为单元格。但是,这仅适用于默认情况下屏幕上的单元格。任何需要滚动的单元格都不包含复选标记。
有没有办法解决这个问题,最好不必使用动态细胞?
答案 0 :(得分:4)
我使用上面的代码(在问题中)设置了我的viewDidAppear方法中需要选中标记的单元格。我还删除了所有的复选标记,然后像之前那样在didSelectRowAtIndexPath方法中向选定的单元格添加一个。
在两种方法的每一种中,我将NSString变量设置为所选单元格的.textview.text,然后实现此方法:
-(void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {
cell.accessoryType = UITableViewCellAccessoryNone;
if ([cell.textLabel.text isEqualToString:[NSString stringWithFormat:@"%@", myFirstString]] || [cell.textLabel.text isEqualToString:[NSString stringWithFormat:@"%@", mySecondString]]) {
cell.accessoryType = UITableViewCellAccessoryCheckmark;
}
}
希望这可能有助于某人。
答案 1 :(得分:0)
那是因为当您滚动时,您的单元格会被重建并清除复选标记。
您需要在
中进行设置- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath