2011-05-05 55 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