我正在尝试在按下按钮时在我的应用程序中显示“关于页面”,但是当我按下UIButton时,会调用NSLog(@“按下按钮”),但视图将不会加载。这是我的代码:
- (IBAction)pushAbout {
NSLog(@"Button pressed");
AboutView * aboutView = [[AboutView alloc] initWithNibName:@"AboutView" bundle:nil];
[self.navigationController pushViewController:aboutView animated:YES];
[aboutView release];
}
我在一个例子中看过这个代码,但它是在UITableViewController而不是ordianry UIView控制器中调用的。
类文件“AboutView”创建为UIViewController子类。他们被创造并保持原状
答案 0 :(得分:2)
猜测:您的视图不在UINavigationController中,因此
self.navigationController
实际上是nil
,没有任何反应。
解决方案是将主视图放在导航控制器中,并将导航控制器的视图添加到应用程序的主窗口。
一种简单的方法:
在您的app delegate中,更改
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:
(NSDictionary *)launchOptions
{
// Override point for customization after application launch.
self.window.rootViewController = self.viewController;
[self.window makeKeyAndVisible];
return YES;
}
到
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions
(NSDictionary *)launchOptions
{
// Override point for customization after application launch.
UINavigationController* navController = [[UINavigationController alloc]
initWithRootViewController:self.viewController];
self.window.rootViewController = navController;
[self.window makeKeyAndVisible];
return YES;
}
或类似的。请注意,这只是为了让您入门,也许不是最好的方式。 (我假设你刚刚在xcode中创建了一个基于视图的应用程序。)
答案 1 :(得分:1)
是的,你没有设置UINavigationController。
添加
NSLog(@"nav? %@", self.navigationController);
到您的操作,您将看到它转储(null)。
但是,如果输入以下代码,AboutView.xib可以正常工作:
[self presentModalViewController:aboutView animated:YES];
而不是
[self.navigationController pushViewController:aboutView animated:YES];
视图将显示。在您压缩的示例中,AboutView.xib不包含标签,因此不要怀疑它是否是白页。
您可以使用
关闭显示的模态视图[self dismissModalViewControllerAnimated:YES];
在你的AboutViewController中。
为了开始使用UINavigationController,我建议使用基于导航的应用程序模板创建应用程序。