我不知道我想要做什么是可能的,但因为我没有想要的结果,我猜不是。
我在做什么,需要做的是使用presentViewController从以前的ViewController调用SplitViewController。
我知道,SplitViewController必须是rootViewController,但我需要探索最可能的选项来实现我需要做的事情。
我有一个MainMenu的按钮,并与每个按钮,我需要调用SplitViewController。首先,怎么做到这一点?
我试图做到这一点的是: 首先,在AppDelegate中我打电话的MainMenu,并添加作为一个子视图和其他的东西:我可以使用presentModalViewController显示SplitViewController吗?
-(BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[window addSubview:self.mainMenu.view];
[self.mainMenu presentModalViewController:self.firstMenu animated:NO];
[self.window makeKeyAndVisible];
return YES;
}
然后,在MainMenu的,我打电话SecondViewController,在模式的看法,使用此代码:
SecondViewController *secV = [[SecondViewController alloc]initWithNibName:@"SecondViewController" bundle:nil];
secV.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
[self presentModalViewController:secV animated:YES];
在这种SecondViewController,我创建SplitViewController在师父& DetailViewController的,使用此代码:
-(void)viewDidLoad{
[super viewDidLoad];
// Do any additional setup after loading the view from its nib.
UISplitViewController *splitViewController = [[UISplitViewController alloc]init];
SecondMenuViewController *secMenu = [[SecondMenuViewController alloc]init];
UINavigationController *navLef = [[UINavigationController alloc]init];
[navLef pushViewController:secMenu animated:NO];
SecondMainViewController *secMain = [[SecondMainViewController alloc]init];
UINavigationController *navRig = [[UINavigationController alloc]init];
[navRig pushViewController:secMain animated:NO];
splitViewController.delegate = secMain;
splitViewController.viewControllers = [NSArray arrayWithObjects:navLef, navRig, nil];
MainAppDelegate *mainApp = [[MainAppDelegate alloc]init];
[mainApp changeRootViewController:splitViewController];
navRig = nil;
navLef = nil;
secMain = nil;
secMenu = nil;
splitViewController = nil;
}
正如你所看到的,我在MainAppDelegate中调用了一个方法来更改视图和RootViewController,因为SplitViewController必须是RootViewController。这是方法:
-(void)changeRootViewController:(UISplitViewController *)splitViewController{
[self.window addSubview:splitViewController.view];
self.window.rootViewController = splitViewController;
}
我知道,这看起来像一团糟。当我运行时,SplitViewController从不显示,所以我认为,我试图做的事情是不可能的?或者我错了什么? 如果是一切,我可以怎样在MainViewController之后显示SplitViewController?
我使用XCode4.4和iOS5的 非常感谢您
谢谢...这个选项看起来很快且很有用。我已经测试过了,但现在我有两个问题。首先是:在我的MainMenu中,我需要“存储”View,因为当我需要返回时,我需要MainMenu显示最后的选项。我试图复制我的视图在另一个UIView之前删除,然后重新分配,但没有任何反应,因为不能复制UIView。第二个问题,当我旋转模拟器时,self.firstMenu不旋转。 self.firstMenu是带按钮/选项的视图 – user1600801