> FormOneViewController – 在MasterView中初始化的TableViewController
> FormTwoViewcontroller – TableViewCotnroller informaised in detailView
> FormThreeViewcontroller – 尚未显示.
当用户在FormTwoViewController中选择一个项目时,我们希望FormThreeViewCOntroller出现在detailView中,而FormTwoViewController(当前的详细信息视图)将成为masterView.
我们还需要在详细视图上有一个后退按钮来返回视图控制器的堆栈.因此,当按下后退时,FormTwoViewController将成为detailView,FormOneViewController将再次成为主视图.
我们尝试使用UISPlitViewcontroller以及masterNavigationController和detailNavigationController来实现它.我们有初始阶段工作,在应用程序启动时正确显示视图,我们选择FormTwoViewController项,它将FormThreeViewController推送到detailNavigationController,FormTwoViewController被推送到masterNavigationController堆栈.
我们现在面临的问题是双重的
>当在详细视图控制器中按下后退按钮时,它什么都不做.似乎处理程序已经断开连接或其他东西.
>我们没有在纵向模式下获得按钮以在弹出窗口中显示主视图.
有没有人有任何如何做到这一点或任何帮助的例子,我们将不胜感激.
解决方法
创建新项目作为拆分视图控制器并从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是你的形式一个,详细视图控制器是你的形式二.
详细视图控制器即ur表单两个创建类变量
SplitViewAppDelegate * appDelegate; // id ur app delegate变量
设置属性并合成它.
然后以你的形式两个
- (void)viewDidLoad { self.appDelegate = (SplitViewAppDelegate *)[[UIApplication sharedApplication] delegate]; }
最后在推动你的形式三
- (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]; }
相应地设置你的splitview delgeate.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。