1

我有使用自定义单元格制作的 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 第一次实例化(从情节提要)时,我正确地得到了两个对象(我只为表格视图的第一行添加了结果):

在此处输入图像描述

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

在此处输入图像描述

为什么 UILabel 有效而 UISwitch 无效?

UISizeClasses 未启用,正如关于此问题的另一篇文章中所建议的那样。

谢谢, 科拉多

4

1 回答 1

1

您在代码中的其他位置更改开关的标记,可能是这样当开关更改时,您可以从中获取行号。

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

于 2015-04-04T14:41:48.013 回答