我的代码中存在以下问题:
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;
}
我只是想不通为什么它只发生在第一个。
答案 0 :(得分:0)
听起来像nib文件的初始化出了问题,特别是一旦被调用的-loadView
方法(在视图控制器显示之前发生并且负责与代理对象挂钩IBOutlets) )。您确定每个IBOutlet都已正确连接并且视图也已连接吗?你可能想检查你的笔尖。