да, вы можете сделать это, но вам нужно создать отдельный контроллер представления для мастера и детали, создать новый проект как контроллер разделения представления и удалить разделенное представление из xib, чтобы мы создавали разделенное представление из кода.
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Override point for customization after app launch.
self.splitViewController =[[UISplitViewController alloc]init];
self.rootViewController=[[RootViewController alloc]init];
self.detailViewController=[[DetailViewController alloc]init];
UINavigationController *rootNav=[[UINavigationController alloc]initWithRootViewController:rootViewController];
UINavigationController *detailNav=[[UINavigationController alloc]initWithRootViewController:detailViewController];
// Add the split view controller's view to the window and display.
self.splitViewController.viewControllers=[NSArray arrayWithObjects:rootNav,detailNav,nil];
self.splitViewController.delegate=detailViewController;
[self.window addSubview:self.splitViewController.view];
[self.window makeKeyAndVisible];
return YES;
}
где rootviewcontroller - это форма 1, а контроллер подробного вида - форма 2.
контроллер подробного представления, т. Е. Форма 2, создает переменную класса SplitViewAppDelegate * appDelegate;// id ur app делегирует свойство set переменной и синтезирует его.
, затем в форме ur два
- (void)viewDidLoad {
self.appDelegate = (SplitViewAppDelegate *)[[UIApplication sharedApplication] delegate];
}
и, наконец, нажимая форму ur три
- (IBAction)pushViewController:(id)sender{
NSLog(@"%@",self.appDelegate.splitViewController.viewControllers);
RootLevel1 *rootLevel1 =[[RootLevel1 alloc]init];//create form 1 root vc and assign form 1 vc
DetailLevel1 <UISplitViewControllerDelegate>*detailLevel1=[[DetailLevel1 alloc]init];
UIBarButtonItem *backButton = [[UIBarButtonItem alloc]
initWithTitle: @"Home"
style:UIBarButtonItemStylePlain
target:self
action:@selector(home)];
rootLevel1.navigationItem.leftBarButtonItem=backButton;
[self.appDelegate.splitViewController viewWillDisappear:YES];
[[self.appDelegate.splitViewController.viewControllers objectAtIndex:0] pushViewController:rootLevel1 animated:YES];
[[self.appDelegate.splitViewController.viewControllers objectAtIndex:1] pushViewController:detailLevel1 animated:YES];
self.appDelegate.splitViewController.delegate = detailLevel1;
[self.appDelegate.splitViewController viewWillAppear:YES];
}
идля всплывающего окна просмотра контроллера
-(void)home {
[self.splitViewController viewWillDisappear:YES];
[[self.appDelegate.splitViewController.viewControllers objectAtIndex:0]popViewControllerAnimated:YES];
[[self.appDelegate.splitViewController.viewControllers objectAtIndex:1]popViewControllerAnimated:YES];
UIViewController <UISplitViewControllerDelegate>*viewController=[[self.appDelegate.splitViewController.viewControllers objectAtIndex:1] visibleViewController];
self.splitViewController.delegate=viewController;
[self.splitViewController viewWillAppear:YES];
}
соответственно установите Delgeate ur splitview.