我想添加一个显示/隐藏弹出框的按钮,类似于 DropBox 应用程序。(横向和纵向)
我已经尝试了很多解决方案,但在这个阶段,我什至不想用我的尝试来搅浑水。如果你已经这样做了,或者知道如何做到这一点,请向我发送正确的方向!
谢谢!
我想添加一个显示/隐藏弹出框的按钮,类似于 DropBox 应用程序。(横向和纵向)
我已经尝试了很多解决方案,但在这个阶段,我什至不想用我的尝试来搅浑水。如果你已经这样做了,或者知道如何做到这一点,请向我发送正确的方向!
谢谢!
看来这很简单。
将一些对象设置为 splitViewController 的委托。就我而言(我以编程方式创建所有视图控制器)是 appdelegate。
UISplitViewController* splitViewController = [[UISplitViewController alloc] init]; [splitViewController setViewControllers:@[navigationViewController1, navigationViewController2]]; splitViewController.delegate = self;
实现委托方法以在纵向隐藏主人:
- (BOOL)splitViewController:(UISplitViewController *)svc shouldHideViewController:(UIViewController *)vc inOrientation:(UIInterfaceOrientation)orientation { 返回 UIInterfaceOrientationIsPortrait(orientation); }
实际添加 barButtonItem:
-(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:@"你的主标题"]; slaveViewController.navigationItem.leftBarButtonItem = barButtonItem; }
在此方法中,您将获得自定义的 barButtonItem 并将其添加到 slaveViewController。
最后一个,删除横向按钮:
- (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 相同。