2011-05-05 94 views
0

我试图在按下按钮时在我的应用程序中显示“关于页面”,但是当我按下UIButton时,调用NSLog(@“Button pressed”),但视图将不会加载。这里是我的代码:加载.xib文件并显示它

- (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

您的包中是否有AboutView.xib文件? – 2011-05-05 16:33:39

+0

是的,它与AboutView.m和Abo​​utView.h一起添加,并且只包含标签 – 2011-05-05 16:35:06

+0

什么都不会发生?或者只是出现白色视图? AboutView.xib是否正确添加到目标?你有没有保存你的xib文件?我有时编辑我的xib并忘记保存... – 2011-05-05 16:40:57

回答

1

是的,你没有设置UINavigationController。

添加

NSLog(@"nav? %@", self.navigationController); 

到你的动作,你会看到它转储(空)。的

[self presentModalViewController:aboutView animated:YES]; 

代替

[self.navigationController pushViewController:aboutView animated:YES]; 

画面将会出现:

然而,AboutView.xib如果你输入验证码工作正常。在你压缩的例子中,AboutView.xib不包含标签,所以不要怀疑它是否是一个白页。

您可以通过在你的AboutViewController使用

[self dismissModalViewControllerAnimated:YES]; 

驳回呈现模式的看法。

为了让您掌握UINavigationController,我建议使用基于导航的应用程序模板创建一个应用程序。

+0

似乎像我fogrot来保存它。无论如何,代码现在工作。万分感谢 – 2011-05-05 17:09:28

2

猜测:您的观点是不是在一个UINavigationController,因此

self.navigationController 

实际上是nil,并没有任何反应。

解决方案是将主视图放置在导航控制器中,然后将导航控制器的视图添加到应用程序的主窗口。

一个这样做的简单的方法:

在你的应用程序代理,更改

- (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中创建了一个基于视图的应用程序。)

+0

我很新的Obj-C。任何教程如何做到这一点?编辑:self是mainViewController,它包含我按钮的所有插座和动作 – 2011-05-05 16:56:01

+0

请参阅编辑答案以获取简短教程。 – uvesten 2011-05-05 17:12:49

+0

谢谢,但上面的工作对我来说足够好用了。再次感谢你,反正 – 2011-05-05 17:27:00