我的项目首先使用Three20框架工作来处理导航。但由于一些问题,我要删除三个部分。所以我重新设计我的应用程序。 我试图做的是在用户触摸按钮时显示详细视图。我创建了一个新的主窗口,因为之前没有。它没有导航控制器。
DetailViewController * detailViewController = [[DetailViewController alloc] init];
[self.navigationController pushviewController:detailviewController animated:YES]
在buttos touch up事件中。 但是当我在按钮触摸时运行app nothings hapens。没有显示警告或错误。 我在其他应用程序中完成了这个,但它在这里不起作用。
答案 0 :(得分:1)
由于您没有使用UINavigationController,因此UIViewController的navigationController属性将保持为零。 “编译方式”没有问题,因为属性存在,但编译器不知道属性将保持为零,因此不会显示警告/错误。
在Objective-C中允许向nil对象发送消息,因此代码不会崩溃并且在运行时不会执行任何操作。
如果你想要提高你的代码和运行时,您需要将根UIViewController放在UINavigationController中。一旦UIViewController显示在UINavigationController中,该属性将自动设置为UINavigationController。
编辑:您可以使用类似的内容,而不是显示someController,将其“封装”在UINavigationController中并显示该控制器。
UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:someController];