繁体   English   中英

Objective-C:未初始化表视图数据源的实例变量

[英]Objective-C: Instance variable for table view data source not being initialized

我正在初始化数据源,如下所示:

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

这不起作用; 在每个单元格上打印“(null)测试”。

编辑:

这是我如何导航到这个视图控制器:

- (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的viewDidLoad,不要动画如下:

- (void)viewDidLoad {
   [super viewDidLoad];
   // Do any additional setup after loading the view.
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM