- (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
的新手答案 0 :(得分:2)
您需要为其创建按钮,例如:
UIBarButtonItem *doneButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:launcherView action:@selector(endEditing)];
self.navigationItem.leftBarButtonItem = doneButton;
[doneButton release];
答案 1 :(得分:1)
使用UINavigationController
的正确方法是push
查看控制器。这样它们将被堆叠,并且当它是大小写时(即,当你实际上可以回到之前的控制器时)导航栏将用后退按钮填充。您可以通过定义您推送的控制器的title
来控制“后退”按钮中显示的标签。
另一个答案中显示的技巧(明确设置按钮)对于定义右按钮很有用,如果你需要的话。
您可以尝试使用此代码:
- (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);删除其余部分;
文件的所有者代理出口是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 nib有很多问题。
但我希望这个骨架足以让你继续发展。
答案 2 :(得分:0)
由于您没有向窗口添加视图,因此错过了该行。在您的代码中添加此行
[window addSubview:nav_obj.view];