viewWithTag: returns nil after reloadData

viewWithTag: returns nil after reloadData

我有 table视图,其中有 6 行是用自定义单元格制作的。

自定义单元格有一个 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 首次实例化时(从故事板)我正确地得到了两个对象(我只为 table 视图的第一行添加结果):

但是当我将 reloadData 方法发送到 tableView 时(UISwitch 状态可以通过编程方式更改,所以我在显示它之前更新 tableview)我正确地得到了 UILabel 而 UISwitch 是无:

为什么 UILabel 有效而 UISwitch 无效?

UISizeClasses 未启用,正如另一个 post 关于此问题的建议。

谢谢,科拉多

您在代码的其他地方更改了开关的标记,可能是为了在更改开关时可以从中获取行号。

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