微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在视图上显示UINavigationController

如何解决如何在视图上显示UINavigationController

|
- (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:viewController.view];
    MainPageDialog *overviewViewController = [[MainPageDialog alloc] initWithNibName:@\"MainPage\" bundle:nil];
    UINavigationController *nav_obj = [[UINavigationController alloc] initWithRootViewController:overviewViewController ];

    [self.viewController presentModalViewController:nav_obj  animated:YES];
    [overviewViewController release];
    [self.window makeKeyAndVisible];

    return YES;
}
这段代码显示了导航控制器的蓝色条,但上面没有按钮.UINavigationController似乎被分配为空。 谁知道是什么问题? UPD:存档http://www.mediafire.com/?lbjjvl6fcue2q18 请帮助我,我是Objective-C的新手     

解决方法

        使用“ 1”的正确方法是在其上“ 2”个视图控制器。这样一来,它们就会堆叠在一起,并且在出现情况时(即,当您实际上可以返回到上一个控制器时)将在导航栏中填充一个后退按钮。您可以通过定义所按控制器的“ 3”来控制显示在“后退”按钮中的标签。 如果需要,可以使用另一个答案(明确设置按钮)中显示的技术来定义正确的按钮。 您可以尝试使用以下代码:
 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {    

    MainPageDialog *overviewViewController = [[MainPageDialog alloc] initWithNibName:@\"MainPage\" bundle:nil];
    UINavigationController* navigation = [[UINavigationController alloc] init];
    [navigation pushViewController:overviewViewController animated:NO];
    [overviewViewController release];

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

    return YES;
}
而不是做:
    UINavigationController* navigation = [[UINavigationController alloc] init];
    [navigation pushViewController:overviewViewController animated:NO];
您也可以使用
initWithRootController
,但要显示推视图控制器的一般情况,我更喜欢使用此控制器。 请注意,由于您只按了根控制器,此刻您应该看不到后退按钮,但是如果您按第二个视图控制器,它将出现。 编辑:我看了你的项目。您应该尝试做的事情的摘要: 您的NIB中需要的对象:文件的所有者(UIApplication),第一响应者,FBFun应用程序委托(iVkAppDelegate),窗口(UIWindow);除去其余部分; File \的所有者委托出口是FBFun App Delegate; FBFun App Delegate窗口出口是Window。 通过这种简单的设置(或多或少的功能),请使用以下代码:
 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {    

     UINavigationController* navigation = [[UINavigationController alloc] init];

     //--    MainPageDialog *overviewViewController = [[MainPageDialog alloc] initWithNibName:@\"MainPage\" bundle:nil];
     iVkViewController *overviewViewController = [[iVkViewController alloc] init];
 overviewViewController.title = @\"First\";
     [navigation pushViewController:overviewViewController animated:NO];

     iVkViewController *overviewViewController2 = [[iVkViewController alloc] init];
 overviewViewController2.title = @\"Second\";
     [navigation pushViewController:overviewViewController2 animated:NO];

    [overviewViewController release];
    [window addSubview:[navigation view]];
    [self.window makeKeyAndVisible];

    return YES;
}
正如您所注意到的,在上面的代码中,我实例化了您的
iVkViewController
两次,只是为了让第二个控制器推到导航器上。 请从模拟器中删除您现有的应用程序,然后运行此程序,以确保正确创建了导航栏,您可以从第二个控制器返回到第一个控制器。 我删除了MainPageDialog的用法,因为MainPage笔尖有很多问题。 但我希望这个骨架足以让您继续发展。     ,        您需要为其创建按钮,例如:
UIBarButtonItem *doneButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:launcherView action:@selector(endEditing)];
self.navigationItem.leftBarButtonItem = doneButton;
[doneButton release];
    ,        由于您未在窗口中添加视图,因此错过了这一行。在代码中添加此行
[window addSubview:nav_obj.view];
    

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。