ios - Objective-C: TableView 数据源的实例变量未初始化

标签 ios objective-c uitableview

我正在像这样初始化数据源:

@interface SelectWifiViewController() {
    NSArray *exampleNetworks;
}
@end

和:
- (void) viewDidLoad: (BOOL) animated {
    [super viewDidLoad];

    exampleNetworks = [NSArray arrayWithObjects:@"network 1", @"network 2", "network 3", nil];
}

我在这里使用数据源:
- (UITableViewCell *) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    static NSString *tableCellIdentifier = @"wifiNetworkCell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:tableCellIdentifier];

    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefaultreuseIdentifier:tableCellIdentifier];
    }

    cell.textLabel.text = [NSString stringWithFormat:@"%@, Test", [exampleNetworks objectAtIndex:indexPath.row]];

    return cell;
}

这是行不通的; “(空)测试”打印在每个单元格上。

编辑:

这是我导航到此 View Controller 的方式:
- (void) navAction {
    UIStoryboard *selectWifiView = [UIStoryboard storyboardWithName:@"SelectWifiView" bundle:nil];
    UIViewController *vc = [selectWifiView instantiateViewControllerWithIdentifier:@"SelectWifiView"];
   [self.navigationController pushViewController:vc animated:YES];
}

最佳答案

没有这样的方法:

- (void)viewDidLoad:(BOOL) animated { ... }

你的意思是:
- (void)viewDidLoad { ... }

您当前的方法永远不会被调用,但如果您消除它 animated参数,应该是。

我建议添加断点和/或 NSLog每当您怀疑某个特定方法没有被调用时,您认为它应该被调用。这将确认它是否被调用,如果没有,您可以开始考虑它可能无法到达该代码行的各种原因(在这种情况下,因为方法签名不正确)。

关于ios - Objective-C: TableView 数据源的实例变量未初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48143921/

相关文章:

ios - UITableViewCell,在滑动时显示删除按钮

ios - 从解析查询获取 tableView 中的值的延迟

ios - 处理国际电话号码和不正确的通讯录格式

objective-c - 在 tableView 滚动上显示和隐藏导航栏

ios - 如何在 tableView (Swift) 中删除行后立即选择另一行

ios - 如何在 swift 4 中重新排序单元格后保存 tableView 顺序

objective-c - UITapGestureRecognizer 仅适用于初始化阶段可见的项目

ios - 为不受支持的语言选择本地化

objective-c - 封装特定类型画笔在Objective-C中的绘制方式

iphone - 检测 dispatch_async 方法是否仍在运行