0

我的代码中有以下问题:

    UITableViewController *controller = nil;


switch (indexPath.row) {
    case 0:
        controller = self.kundenTableViewController;
        break;
    case 1:
        controller = self.projekteTableViewController;
        break;
    case 2:
        controller = self.leistungenTableViewController;
        break;
    case 3:
        controller = self.zeitenTableViewController;
        break;
}

[self.navigationController pushViewController:controller animated:YES];

所有这四个视图控制器都在 .h 文件中正确定义并手动合成(是的,所有这些都完全相同,我仔细检查了):

- (LeistungenTableViewController*)leistungenTableViewController {
if (leistungenTableViewController == nil) {
    // Neu erzeugen
    leistungenTableViewController = [[LeistungenTableViewController alloc] initWithNibName:@"LeistungenListeView" bundle:nil];
} 
return leistungenTableViewController;

}

现在,发生了一些奇怪的事情:如果case 0:调用了 ,controller则变为self.kundenTableViewController。然后我EXC_BAD_ACCESS在最后一行得到一个,视图控制器被推入堆栈。这只发生在这个特定的控制器上,不会发生在其他控制器上。我尝试了 NSZombies 并通过 NSLog 检查控制器是否正确初始化,但一切似乎都很好。有任何想法吗?

更新:这是四个控制器的代码:

- (KundenTableViewController*)kundenTableViewController {
if (kundenTableViewController == nil) {
    // Neu erzeugen
    kundenTableViewController = [[KundenTableViewController alloc] initWithNibName:@"KundenListeView" bundle:nil];
} 
return kundenTableViewController;

}

- (LeistungenTableViewController*)leistungenTableViewController {
if (leistungenTableViewController == nil) {
    // Neu erzeugen
    leistungenTableViewController = [[LeistungenTableViewController alloc] initWithNibName:@"LeistungenListeView" bundle:nil];
} 
return leistungenTableViewController;

}

- (ProjekteTableViewController*)projekteTableViewController {
if (projekteTableViewController == nil) {
    // Neu erzeugen
    projekteTableViewController = [[ProjekteTableViewController alloc] initWithNibName:@"ProjekteListeView" bundle:nil];
} 
return projekteTableViewController;

}

- (ZeitenTableViewController*)zeitenTableViewController {
if (zeitenTableViewController == nil) {
    // Neu erzeugen
    zeitenTableViewController = [[ZeitenTableViewController alloc] initWithNibName:@"ZeitenListeView" bundle:nil];
} 
return zeitenTableViewController;

}

我只是无法弄清楚为什么它只发生在第一个。

4

1 回答 1

0

听起来 nib 文件的初始化出现了问题,特别是一旦-loadView调用了方法(这发生在视图控制器显示之前并负责将 IBOutlets 与代理对象挂钩)。您确定每个 IBOutlet 都已正确连接并且视图也已连接吗?你可能想检查你的笔尖。

于 2011-07-03T18:27:21.157 回答