Iphone pushViewController的问题

Iphone pushViewController的问题,iphone,objective-c,uiviewcontroller,push,Iphone,Objective C,Uiviewcontroller,Push,我有一个应用程序,其中有一个根视图控制器,它将另一个视图控制器推到视图中。此视图控制器显示一个表。选择一个单元后,它将推送到另一个视图控制器。 第一次推起作用,但第二次不行。 以下是我在表格中选择单元格的代码: - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { TwoViewController *two = [[TwoViewController all

我有一个应用程序,其中有一个根视图控制器,它将另一个视图控制器推到视图中。此视图控制器显示一个表。选择一个单元后,它将推送到另一个视图控制器。 第一次推起作用,但第二次不行。 以下是我在表格中选择单元格的代码:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 

TwoViewController *two = [[TwoViewController alloc] initWithNibName:@"TwoViewController": bundle:[NSBundle mainBundle]];
[self.navigationController pushViewController:two animated:YES];
[two release];
知道我做错了什么吗?我用于两次推送的代码几乎相同。。。 我也尝试过将此代码放入UIButton的touchUpInside事件中,但它不起作用。 我猜没有navigationController来推送视图,但我不知道。
请帮忙

如果新的视图控制器是视图的一部分,它可能没有导航控制器。推送前检查导航控制器是否为零。

其导航控制器问题。正确检查它

记录'two'和self.navigationController

NSLog(@"two = %@", two);

NSLog(@"self.navigationController = %@", self.navigationController);

首先,您将了解其中一个是否为nil(或两者都为nil),以及是否调用了tableView:didselectRowatinexPath:。

您是否更改了TwoViewController上的-initWithNibName:bundle方法?我猜它没有正确初始化(即:该方法没有正确初始化超类)

编辑:我想我发现了错误,事实上,这有点明显

请检查您发布的代码:

initWithNibName:@"TwoViewController": bundle:[NSBundle mainBundle]];
错误出现在
@“TwoViewController”附近:
字符串,一个不应该出现的额外分号,请将其更改为:

initWithNibName:@"TwoViewController" bundle:[NSBundle mainBundle]];

tableView:DidSelectRowatingIndexPath:gets called,我在方法结束前尝试了一个NSLog(@“正在调用方法”),并收到了消息。但是,NSLog(@“self.navigationController=%@”,self.navigationController);给出“null”的结果。双视图控制器给出了这个结果。这是否意味着两者都为零?我怎样才能解决这个问题?two=您是否在
TwoViewController
中执行任何特殊初始化,或者在
viewDidLoad
中执行任何奇怪的操作
self.navigationController
不应为空。您应该做的是提供创建视图的viewController的navigationController作为视图的参数,以便视图可以使用父viewController的navigationController。您不必这样做。推送新的视图控制器时,
self.navigationController
属性将自动设置。@kubi:他的子视图不知道他的navigationController,因此他必须提供navigationController作为属性(分配)或任何其他方式来推送viewController(或者他必须在他的“superview”类中调用它,但这是一种不太安全的方法,无法始终确保superview是UIViewController的子类)。他说他的类是推到导航堆栈中的
UIViewController
的子类。默认情况下,应该设置navigationController属性,因此他一定在某个地方搞错了什么。啊,是的,我想我读错了,我想我读到了他创建了一个UIView子类。在这种情况下,有点让人费解为什么导航ionController为nil。能否发布用于推送第一视图控制器的代码?