2010-07-07 43 views
0

我的第一XIB包含在MainWindow.xib中一樣的界面的跳板滾動型:幫助導航控制器,窗口和子視圖!

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 
    navController = [[UINavigationController alloc] init]; 

[navController setNavigationBarHidden:YES]; [window addSubview:navController.view]; [window sendSubviewToBack:navController.view]; }

當按鈕被點擊的FirstViewController會出現一個tableview中和導航控制器:

- (void) buttonPushed:(id)sender { 
     FirstViewController *firstViewController = [[FirstViewController alloc] init]; 
     [navController pushViewController:firstViewController animated:YES]; 
[firstViewController release]; 


[window addSubview:navController.view]; } 

當我點擊導航控制器的後退按鈕返回到跳板,我得到的跳板廈門國際銀行,但對頂部導航欄的觸摸反應遲鈍!

- (void)goHome:(id) sender { 
[self.view removeFromSuperview]; 

我怎樣才能回到跳板屏幕(mainwindow.xib),而沒有導航欄堆疊在頂部,並響應觸摸?

回答

0

爲什麼不將跳板視圖設置爲導航控制器的根視圖控制器並擺脫窗口中的任何UI?

我認爲窗口不應該有任何UI元素接受添加到它的視圖控制器的視圖(通過導航控制器或標籤欄控制器)。

這樣你就不必重新發明第一個視圖來從彈簧板視圖加載,後退按鈕將正常工作。

可以在根視圖控制器(跳板視圖的視圖控制器)的viewDidLoad方法中將navigationBarHidden屬性設置爲false。

+0

好吧,我曾嘗試在MainWindow.xib中添加一個ViewController。 ViewController下是一個帶有ScrollView的視圖和跳板界面。我使用[window addSubview:dashboardViewController.view]將儀表板添加到窗口。我創建了Nav控制器:navController = [[UINavigationController alloc] init],添加FirstView控制器堆棧:navController.viewControllers = [[NSArray arrayWithObject:firstViewController] retain];當我點擊跳板上的一個按鈕時,我使用:[window addSubview:navController.view];有沒有更好的辦法?因爲我再次處於相同的位置。 – Bill 2010-07-08 06:09:31

+0

更好的方法是在他剛剛向您解釋的那樣,將dashboardViewController作爲根視圖控制器初始化UINavigationController。然後,當儀表板控制器出現時,您可以將navController的隱藏屬性設置爲YES,當消失時,可以將navController的隱藏屬性設置爲YES。 – Charter 2010-07-08 06:56:05

+0

@Bill,你有沒有試過我的建議? – 2010-07-08 22:59:36

0

您是否嘗試調用[navController setNavigationBarHidden:YES];在你的mainview viewWillAppear回調?

+0

那麼,在ViewDidApper沒有工作,但它的工作對 - (空)GOHOME:(ID)發送{當我點擊按鈕。 問題是,gui仍然沒有響應觸摸。 – Bill 2010-07-08 05:50:57

0
- (void)applicationDidFinishLaunching:(UIApplication *)application 

{

UIViewController *rootController = [[MyRootViewController alloc] init]; 

navigationController = [[UINavigationController alloc] 

          initWithRootViewController:rootController]; 

[rootController release]; 



window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; 

[window addSubview:navigationController.view]; 

[window makeKeyAndVisible]; 

}