我正在使用xcode 4.5.2的主 - 详细信息模板。我没有将UINavigationController
保留为rootViewController
的{{1}},而是使用我自己的ViewController将其替换为简单的启动画面作为其视图。显示启动画面后,我想将UIWindow
推送为navigationController
(包含主文件和self.window.rootviewController
)。
问题是虽然我的detailViewControllers
已初始化并且其ViewController
已被调用,但其视图(启动画面未显示)。
viewDidLoad
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone)
{LoginViewController *loginViewController = [[[LoginViewController alloc] initWithNibName:@"LoginViewController_iPhone" bundle:nil] autorelease];
// loginViewController.masterViewController = loginViewController;
[self.window setRootViewController:loginViewController];
[self.window addSubview:loginViewController.view];
if (BOOL condition is YES)
{
MasterViewController *masterViewController = [[[MasterViewController alloc] initWithNibName:@"MasterViewController_iPhone" bundle:nil] autorelease];
self.navigationController = [[[UINavigationController alloc] initWithRootViewController:masterViewController] autorelease];
//self.window.rootViewController = self.navigationController;
}
是带有启动画面的自定义控制器。那么如何在使用导航控制器时从App委托更改启动画面? (主 - 详细模板)
答案 0 :(得分:0)
这可能不是这样做的方法。您应该保留master-detail结构(作为窗口的根视图控制器),并在应用程序首次启动时将启动屏幕显示为模式视图控制器。只需使用presentViewController:animated:在主视图控制器的viewDidLoad方法中显示您的LoginViewController。
编辑后:如果你想按照你尝试的方式进行,你拥有的代码几乎是正确的。可以使用以下代码从登录控制器(而不是应用程序委托)完成此操作:
if (BOOL condition is YES) {
MasterViewController *masterViewController = [[[MasterViewController alloc] initWithNibName:@"MasterViewController_iPhone" bundle:nil] autorelease];
UINavigationController *navigationController = [[[UINavigationController alloc] initWithRootViewController:masterViewController] autorelease];
self.view.window.rootViewController = navigationController;
}