嗨我在原型单元格上有一个UISwitch
。
当我将UISwitch
更改为OFF
并通过滚动将单元格移出UITableView
框架然后向后滚动 - UISwitch
为ON
但是进行了更改 - 因为当我再次调用UITableView控制器显示在屏幕上时 - UISwitch
为OFF
。
代码是:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
SettingsOptionCell * cell = [tableView dequeueReusableCellWithIdentifier: @"SettingsOptionCell"];
NSDictionary *data = [NSDictionary new];
cell.onOption.hidden = NO;
switch (indexPath.section) {
case SettingsControllerServiceSection:
data = self.serviceAttr[indexPath.row];
break;
case SettingsControllerStatusSection:
data = self.statusAttr[indexPath.row];
break;
default:
break;
}
cell.captionLabel.text = data[@"name"];
cell.onOption.on = [data[@"check"] boolValue];
cell.optionId = data[@"id"];
cell.updateHandler = ^(){
if (self.updateHandler) {
[self update];
self.updateHandler();
}
};
return cell;
}
答案 0 :(得分:1)
非常有趣的代码。 首先:我没有看到你在哪里创建单元格(dequeueReusableCellWithIdentifier:只从可重用队列中挑选对象而我看不到你把它放在哪里)。 第二个:
cell.onOption.on = [data[@"check"] boolValue];
每次将单元格放在tableView时从字典中设置switch的值。你是否真的改变了这个值?
P.S。每当单元格变得可见时(滚动表格)将被称为
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath