2011-04-28 27 views
2

我已經創建了一個基於視圖的應用程序,並在appdelegate .h文件中創建了UINavigationcontroller對象並將其添加到窗口subview.Application下一步完成啓動我已分配和初始化,我想,當應用程序首先在它的頂部的導航欄啓動被視爲一類。 所以這是代碼,我做的類添加到導航欄如何調用導航控制器上的另一個類,並將其添加到應用程序代理

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    // Override point for customization after application launch. 

    // Add the view controller's view to the window and display. 
    [window addSubview:navController.view]; 
    //test is the class that i want to be viewed first when the app launches first 
    test *t = [[test alloc]initWithNibName:@"test" bundle:nil]; 
    [navController.view addSubview:t.view]; 
    [window makeKeyAndVisible]; 

    return YES; 
} 

但問題是我的測試類的推出,但它不會顯示在導航欄。 什麼可能是這個問題。請幫助我解決這個問題。謝謝

回答

1

使用一些像這樣(加上這些行)

appDelegate.h

的UINavigationController * navController

@property (nonatomic,retain) UINavigationController *navController; 

和.M

test *t = [[test alloc]initWithNibName:@"test" bundle:nil]; 
self.navController=[[[UINavigationController alloc] initWithRootViewController:t] autorelease]; 

[window addSubview:self.navController.view]; 
[window makeKeyAndVisible]; 

它可以幫助你。

從你需要做的appDelegate類的對象,然後訪問類的導航控制器另一種觀點

現在看到這個

yourAppDelegateClass *objAppDelegate=(yourAppDelegateClass *)[[UIApplication sharedApplication] delegate]; 

推送視圖

SecondView *s=[[[SecondView alloc] initWithNibName:@"yournibName" bundle:nil] autorelease]; 
[objAppDelegate.navController pushViewController:s animated:YES]; 

這概念幫助你。

+0

喜ishu,我的代碼工作正常的委託類,但如果我想調用另一個控制器上的導航欄什麼.Thanks – Rani 2011-04-28 08:03:18

+0

看到更新的答案。 – Ishu 2011-04-28 09:55:32

+0

感謝現在可以正常工作 – Rani 2011-04-28 11:10:52

0

導航欄不會到來,因爲您正在設置導航控制器的視圖到您的測試視圖。您可以通過設置這需要一個數組作爲導航控制器的視圖控制器做到這一點 -

test *t = [[test alloc]initWithNibName:@"test" bundle:nil]; 
NSArray *viewControllers = [[NSArray alloc] initWithObjects:t,nil]; 
[self.navigationController setViewControllers:viewControllers]; 
1

你不應該添加自己的視圖控制器的視圖導航控制器的一個子視圖。這樣一來,你隱藏導航控制器的視圖(包括導航欄),它使導航控制器沒有意義的,因爲它不知道您的視圖控制器希望成爲它的導航堆棧的一部分。

相反,通過將其推導航控制器的堆棧:

[navController pushViewController:myViewController animated:NO]; 
0

首先,我沒有看到你的Alloc初始化你navController。其次,你沒有一個的viewController添加到導航控制器視圖,而你推視圖控制器壓入堆棧,像這樣:

[navController pushViewController:t animated:NO]; 

希望這有助於。

相關問題