Iphone 在UISplitViewController上显示模式视图的最佳实践

Iphone 在UISplitViewController上显示模式视图的最佳实践,iphone,ipad,uisplitviewcontroller,Iphone,Ipad,Uisplitviewcontroller,基于SplitViewController模板创建一个新应用程序,它在Split View中运行良好 我的主屏幕是一个非拆分视图“菜单”。我正试图找出最佳的治疗方法 在splitViewController上方以模式添加此“主菜单”。(然后将其他非拆分视图推到主菜单上方或 卸下它以显示并使用UISplitViewController。) 我试过: [self.navigationController presentModalViewController:mainMenu animated:NO]

基于SplitViewController模板创建一个新应用程序,它在Split View中运行良好

我的主屏幕是一个非拆分视图“菜单”。我正试图找出最佳的治疗方法 在splitViewController上方以模式添加此“主菜单”。(然后将其他非拆分视图推到主菜单上方或 卸下它以显示并使用UISplitViewController。)

我试过:

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

在ViewWillDisplay和viewWillLoad中,rootViewController和detailViewController的方法。在这两种情况下,代码都会正确执行,但主菜单不会出现,常规的detailViewController和RootViewController会出现

(我确实在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,让它在纵向模式下全屏显示,而不是为根控制器添加菜单项吗?

您的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];
}
//AppDelegate.m
-(BOOL)应用程序:(UIApplication*)应用程序
didFinishLaunchingWithOptions:(NSDictionary*)启动选项
{  
MyController*myCont=[[MyController alloc]initmain菜单];
//乱搞myCont.view.modalPresentationStyle;
[myCont setModalDelegate:self];
//创建委托()以在完成时关闭视图
[self.splitViewController presentModalViewController:myCont动画:否];
[霉素释放];
}
//为了完成任务
-(void)modalViewDismiss:(MyController*)modalView{
[self.splitViewController dismissModalViewController:是];
}

我做到了(正如我在描述中指出的那样)。我确信我遗漏了一些东西。。。它在加载后也可以工作。i、 e.如果我添加了一个方法调用,在ViewWill出现0.01秒后执行,那么它可以工作(但您确实看到了转换)。在使用故事板的应用程序中,当从AppDelegate调用presentModalViewController时,它似乎无法工作。
//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];
}