2010-09-28 85 views
0

我的项目首次使用Three20框架工作来处理navigation.But由于一些问题,我要删除three20 part.So im重新设计我的应用程序。 即时消息试图做的是当用户触摸一个按钮时显示一个详细视图。我创建了一个新的主窗口,因为之前没有。它没有导航控制器。 我用Hoew实现按钮点击导航


DetailViewController * detailViewController = [[DetailViewController alloc] init]; [self.navigationController pushviewController:detailviewController animated:YES]

in the buttos touch up event。 但是当我运行的应用程序没有按钮touch.No警告或错误显示。 我已经在其他应用程序中完成了它,但它只是在这里没有工作。

回答

1

由于您没有使用UINavigationController,因此您的UIViewController的navigationController属性将保持为零。 “编译明智”没有问题,因为该属性存在,但编译器不知道该属性将保持零,因此不显示任何警告/错误。

在Objective-C中允许向nil对象发送消息,因此代码不会在运行时崩溃并且不执行任何操作。

如果您想让代码运行&,您需要将UIViewController放入UINavigationController。一旦UIViewController显示在UINavigationController中,该属性将自动设置为UINavigationController。

编辑:你可以使用这样的东西,而不是显示someController,“封装”在UINavigationController中,并显示该控制器。

UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:someController]; 
+0

好吧我明白了。只是因为编译器showd没有问题而感到困惑 – humblePilgrim 2010-09-28 10:33:24