使用单元格后,UISwitch更改状态

时间:2013-12-25 09:51:39

标签: ios objective-c uitableview uiswitch

嗨我在原型单元格上有一个UISwitch

当我将UISwitch更改为OFF并通过滚动将单元格移出UITableView框架然后向后滚动 - UISwitchON

但是进行了更改 - 因为当我再次调用UITableView控制器显示在屏幕上时 - UISwitchOFF

代码是:

- (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;
}

1 个答案:

答案 0 :(得分:1)

非常有趣的代码。 首先:我没有看到你在哪里创建单元格(dequeueReusableCellWithIdentifier:只从可重用队列中挑选对象而我看不到你把它放在哪里)。 第二个:

cell.onOption.on = [data[@"check"] boolValue];

每次将单元格放在tableView时从字典中设置switch的值。你是否真的改变了这个值?

P.S。每当单元格变得可见时(滚动表格)将被称为

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