Ios6 在UISplitViewController(主详细信息模板)中以编程方式显示和隐藏popover(MasterViewController)
我想添加一个显示/隐藏popover的按钮,类似于DropBox应用程序的按钮。 无论是风景画还是肖像画 我已经尝试了很多解决方案,但在这个阶段,我甚至不想因为我的尝试而弄脏水。如果你已经这样做了,或者知道怎么做,请把我送到正确的方向Ios6 在UISplitViewController(主详细信息模板)中以编程方式显示和隐藏popover(MasterViewController),ios6,uisplitviewcontroller,show-hide,popover,master-detail,Ios6,Uisplitviewcontroller,Show Hide,Popover,Master Detail,我想添加一个显示/隐藏popover的按钮,类似于DropBox应用程序的按钮。 无论是风景画还是肖像画 我已经尝试了很多解决方案,但在这个阶段,我甚至不想因为我的尝试而弄脏水。如果你已经这样做了,或者知道怎么做,请把我送到正确的方向 谢谢 看起来很简单 将某个对象设置为splitViewController的代理。在我的例子中,我以编程方式创建了所有的ViewController,即appdelegate UISplitViewController* splitViewController =
谢谢 看起来很简单 将某个对象设置为splitViewController的代理。在我的例子中,我以编程方式创建了所有的ViewController,即appdelegate UISplitViewController* splitViewController = [[UISplitViewController alloc] init]; [splitViewController setViewControllers:@[navigationViewController1, navigationViewController2]]; splitViewController.delegate = self; 实现委托方法以纵向隐藏主控形状: - (BOOL)splitViewController:(UISplitViewController *)svc shouldHideViewController:(UIViewController *)vc inOrientation:(UIInterfaceOrientation)orientation { return UIInterfaceOrientationIsPortrait(orientation); } - (void)splitViewController:(UISplitViewController *)svc willShowViewController:(UIViewController *)aViewController invalidatingBarButtonItem:(UIBarButtonItem *)barButtonItem { UINavigationController* slaveNavigationViewController = svc.viewControllers[1]; UIViewController* slaveViewController = slaveNavigationViewController.viewControllers[0]; [barButtonItem setTitle:@"Drops"]; slaveViewController.navigationItem.leftBarButtonItem = nil; } 实际上,添加巴布通主义: -(void)splitViewController:(UISplitViewController *)svc willHideViewController:(UIViewController *)aViewController withBarButtonItem:(UIBarButtonItem *)barButtonItem forPopoverController:(UIPopoverController *)pc { UINavigationController* slaveNavigationViewController = svc.viewControllers[1]; UIViewController* slaveViewController = slaveNavigationViewController.viewControllers[0]; [barButtonItem setTitle:@"Your master title"]; slaveViewController.navigationItem.leftBarButtonItem = barButtonItem; } 在这个方法中,您将获得BarButtonim,您可以自定义它并将其添加到slaveViewController中 最后,在横向方向上移除按钮: - (BOOL)splitViewController:(UISplitViewController *)svc shouldHideViewController:(UIViewController *)vc inOrientation:(UIInterfaceOrientation)orientation { return UIInterfaceOrientationIsPortrait(orientation); } - (void)splitViewController:(UISplitViewController *)svc willShowViewController:(UIViewController *)aViewController invalidatingBarButtonItem:(UIBarButtonItem *)barButtonItem { UINavigationController* slaveNavigationViewController = svc.viewControllers[1]; UIViewController* slaveViewController = slaveNavigationViewController.viewControllers[0]; [barButtonItem setTitle:@"Drops"]; slaveViewController.navigationItem.leftBarButtonItem = nil; }
就是这样。看起来很简单 将某个对象设置为splitViewController的代理。在我的例子中,我以编程方式创建了所有的ViewController,即appdelegate UISplitViewController* splitViewController = [[UISplitViewController alloc] init]; [splitViewController setViewControllers:@[navigationViewController1, navigationViewController2]]; splitViewController.delegate = self; 实现委托方法以纵向隐藏主控形状: - (BOOL)splitViewController:(UISplitViewController *)svc shouldHideViewController:(UIViewController *)vc inOrientation:(UIInterfaceOrientation)orientation { return UIInterfaceOrientationIsPortrait(orientation); } - (void)splitViewController:(UISplitViewController *)svc willShowViewController:(UIViewController *)aViewController invalidatingBarButtonItem:(UIBarButtonItem *)barButtonItem { UINavigationController* slaveNavigationViewController = svc.viewControllers[1]; UIViewController* slaveViewController = slaveNavigationViewController.viewControllers[0]; [barButtonItem setTitle:@"Drops"]; slaveViewController.navigationItem.leftBarButtonItem = nil; } 实际上,添加巴布通主义: -(void)splitViewController:(UISplitViewController *)svc willHideViewController:(UIViewController *)aViewController withBarButtonItem:(UIBarButtonItem *)barButtonItem forPopoverController:(UIPopoverController *)pc { UINavigationController* slaveNavigationViewController = svc.viewControllers[1]; UIViewController* slaveViewController = slaveNavigationViewController.viewControllers[0]; [barButtonItem setTitle:@"Your master title"]; slaveViewController.navigationItem.leftBarButtonItem = barButtonItem; } 在这个方法中,您将获得BarButtonim,您可以自定义它并将其添加到slaveViewController中 最后,在横向方向上移除按钮: - (BOOL)splitViewController:(UISplitViewController *)svc shouldHideViewController:(UIViewController *)vc inOrientation:(UIInterfaceOrientation)orientation { return UIInterfaceOrientationIsPortrait(orientation); } - (void)splitViewController:(UISplitViewController *)svc willShowViewController:(UIViewController *)aViewController invalidatingBarButtonItem:(UIBarButtonItem *)barButtonItem { UINavigationController* slaveNavigationViewController = svc.viewControllers[1]; UIViewController* slaveViewController = slaveNavigationViewController.viewControllers[0]; [barButtonItem setTitle:@"Drops"]; slaveViewController.navigationItem.leftBarButtonItem = nil; }
就是这样。有一种更简单、无文档记录的方法。对于现有的UIButton:
[button addTarget: theSplitViewController action: @selector(toggleMasterVisible:) forControlEvents:UIControlEventTouchUpInside];
此目标/操作与在willHideViewController函数中发送的barButtonItem的目标/操作相同。有一种更简单、无文档记录的方法。对于现有的UIButton:
[button addTarget: theSplitViewController action: @selector(toggleMasterVisible:) forControlEvents:UIControlEventTouchUpInside];
此目标/操作与在willHideViewController函数中发送的barButtonItem相同。如果我想在横向中隐藏主视图,该怎么办?要在纵向和横向中隐藏主视图,只需在-BOOLsplitViewController:UISplitViewController*svc shoulldhideViewController:UIViewController*vc中返回yesinOrientation:UIInterfaceOrientationorientation{return YES;}谢谢Norman G,但我想要的应该更像DropBox应用程序:在横向模式下,当弹出窗口显示时,它不应该覆盖细节,而应该调整细节窗口的大小以适应剩余空间。你知道怎么做吗?我的问题是BOOLsplitViewController:UIPlitviewcontroller*svc应该在视图控制器:UIViewController*vc inOrientation:UIInterfaceOrientationOrientationOrientation只有在通过物理旋转改变设备的方向时才会触发。如果我想在横向中隐藏主视图呢在纵向和横向中隐藏主视图只需在BOOLsplitViewController:uiplitviewcontroller*svc应在hideviewcontroller:UIViewController*vc inooritation:uiinterface-orientation:uiinterface-orientation{return-yes;}谢谢Norman G,但我想要的应该更像DropBox应用程序:在横向模式下,显示弹出窗口时,它不应覆盖详图,而应调整详图窗口的大小以适应剩余空间。你知道怎么做吗?我的问题是BOOLsplitViewController:UISplitViewController*svc应该是ideviewcontroller:UIViewController*vc inooritation:uiinterface-oritationoritationoritationoritation只有在通过物理旋转改变设备的方向时才会启动。谢谢,我很快就会试一试!谢谢,我很快就会试一试的!