帮助导航控制器,窗口和&子视图!

时间:2010-07-07 09:20:52

标签: iphone uikit uinavigationcontroller

我的第一个xib在MainWindow.xib中包含一个带有类似跳板的ScrollView:

- (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]; }

当我单击导航控制器中的后退按钮返回跳板时,我得到了跳板xib,但顶部的导航栏没有响应!

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

如何在不将导航栏堆叠在顶部的情况下返回跳板屏幕(mainwindow.xib),并对触摸做出响应?

3 个答案:

答案 0 :(得分:0)

您是否尝试过调用[navController setNavigationBarHidden:YES];在你的主视图viewWillAppear回调?

答案 1 :(得分:0)

为什么不将跳板视图设置为导航控制器的根视图控制器并删除窗口中的任何UI?

我认为窗口不应该有任何UI元素接受添加到它的视图控制器的视图(通过导航控制器或标签栏控制器)。

这样您就不必重新发明轮子,以便从跳板视图加载第一个视图,后退按钮将正常工作。

您可以在根视图控制器的viewDidLoad方法(跳板视图的视图控制器)中将navigationBarHidden属性设置为false。

答案 2 :(得分: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];

}