在UISplitViewController上方显示模态视图的最佳实践

时间:2010-07-22 16:26:54

标签: iphone ipad uisplitviewcontroller

基于SplitViewController模板创建一个新应用程序,它在Split View中工作正常。

我的主屏幕是非splitview'菜单'。我正试图找出最好的做法 在splitViewController上方以模态方式添加此“mainMenu”。 (然后推动mainMenu上方的其他非拆分视图或 删除它以显示并使用UISplitViewController。)

我试过了:

[self.navigationController presentModalViewController:mainMenu animated:NO];

[self presentModalViewController:mainMenu animated:NO];

在rootViewController&的viewWillAppear和viewWillLoad方法中detailViewController。在这两种情况下,代码都会正确执行,但是mainMenu没有出现,会出现常规的detailViewController和rootViewControllers。

(我确实从main.xib文件中的navigationController到detailView navigationController创建了一个插座,但这没有改变任何东西。)

我能够通过使用来完成这项工作,这有效,但似乎是不正确的。

iPad_Prototype_SplitAppDelegate *delegate = (iPad_Prototype_SplitAppDelegate *) [   [UIApplication sharedApplication] delegate];

[delegate.splitViewController.view addSubview:mainMenu.view];
[delegate.splitViewController.view bringSubviewToFront:mainMenu.view];

我看过许多回复说要以模态方式呈现这样的覆盖视图,但我似乎无法在splitViewController设置中找到正确的位置或配置。感谢您的帮助或见解。

最后,这种方法是错误的,我应该只是换掉detailViewController并让它在纵向模式下全屏显示而不是为根控制器添加菜单项吗?

1 个答案:

答案 0 :(得分:1)

AppDelegate中的splitViewController是否就像示例一样,这会有帮助吗?

//AppDelegate.m
- (BOOL)application:(UIApplication *)application 
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{  

MyController *myCont = [[MyController alloc] initMainMenu];
// mess around with myCont.view.modalPresentationStyle;

[myCont setModalDelegate:self]; 
// Create a delegate (<ModalControllerDelegate>) to dismiss view when done

[self.splitViewController presentModalViewController:myCont animated:NO];
[myCont release];
}

// for completion sake
-(void)modalViewDismiss:(MyController *)modalView {
    [self.splitViewController dismissModalViewController:YES];
}