viewWithTag:在reloadData之后返回nil

时间:2015-04-04 14:37:56

标签: ios objective-c uitableview uiswitch viewwithtag

我有一个带有自定义单元格的6行tableView。

自定义单元格具有UILabel和UISwitch。 在方法“cellForRowAtIndexPath:”中我有:

    static NSString *CellIdentifier = @"optionsCell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];

    UISwitch *optionsSwitch = (UISwitch *)[cell viewWithTag:300];
    UILabel  *optionsLabel  = (UILabel *) [cell viewWithTag:200];

    NSLog(@"%@", optionsSwitch);
    NSLog(@"%@", optionsLabel);

首次实例化tableView时(从故事板中)我正确地获取了两个对象(我只是为表视图的第一行添加结果):

enter image description here

但是当我将reloadData方法发送到tableView时(可以通过编程方式更改UISwitch状态,以便在显示之前更新tableview)我在UISwitch为零时正确获取UILabel:

enter image description here

UILabel的工作原理和UISwitch不工作?

UISizeClasses未启用,正如另一篇关于此问题的帖子所示。

谢谢,Corrado

1 个答案:

答案 0 :(得分:1)

您可以在代码中的其他位置更改交换机的标记,这可能是因为当交换机更改时,您可以从中获取行号。

实际上你应该有一个自定义单元格,它有视图的出口,所以你根本不需要使用标签,单元格应该处理开关更改以更新模型或调用一些回调到视图控制器