UISplitViewController displayModeButtonItem()

val*_*fer 16 swift ios8

有人知道改变从UISplitViewController委托返回的按钮的文本(和外观吗?)的方法:

func displayModeButtonItem() -> UIBarButtonItem?
Run Code Online (Sandbox Code Playgroud)

vol*_*s88 19

我以这样的方式解决了这个问题:

UIBarButtonItem(image: UIImage(named:"home"),
            landscapeImagePhone: UIImage(named:"home"),
            style: UIBarButtonItemStyle.Plain,
            target: splitViewController.displayModeButtonItem().target,
            action: splitViewController.displayModeButtonItem().action)
Run Code Online (Sandbox Code Playgroud)

我在AppDelegate中使用它而不是splitViewController.displayModeButtonItem()它,它对我来说很好.


Rod*_*lez 5

我在我的解决方案中结合了josh和voluntas88的解决方案.

首先,您需要使用该UISplitViewControllerDelegate方法 func targetDisplayModeForActionInSplitViewController(_ svc: UISplitViewController) -> UISplitViewControllerDisplayMode ,然后添加自定义的UIBarButtonItem.这是我的解决方案:

func targetDisplayModeForActionInSplitViewController(svc: UISplitViewController) -> UISplitViewControllerDisplayMode {
        if svc.displayMode == UISplitViewControllerDisplayMode.PrimaryHidden || svc.displayMode == UISplitViewControllerDisplayMode.PrimaryOverlay {
            self.navigationItem.leftBarButtonItem = UIBarButtonItem(image: UIImage(named:"menu.png"),
                landscapeImagePhone: UIImage(named:"menu.png"),
                style: UIBarButtonItemStyle.Plain,
                target: self.splitViewController!.displayModeButtonItem().target,
                action: self.splitViewController!.displayModeButtonItem().action)
        }else {
// disable button on landscape
            if UIApplication.sharedApplication().statusBarOrientation == UIInterfaceOrientation.LandscapeLeft || UIApplication.sharedApplication().statusBarOrientation == UIInterfaceOrientation.LandscapeRight {
                self.navigationItem.leftBarButtonItem?.enabled = false
            }
        }
        return UISplitViewControllerDisplayMode.Automatic
    }
Run Code Online (Sandbox Code Playgroud)


小智 1

我有这个完全相同的问题。

这就是我要解决的方法,我将更新我的结果。

返回UIBarButtonItem的内容由其在适当的时间内displayModeButtonItem进行管理。UISplitViewController因此,您所做的任何更改都会被阻止。

然而,有一个新的委托函数:

- (UISplitViewControllerDisplayMode)targetDisplayModeForActionInSplitViewController:(UISplitViewController *)svc
Run Code Online (Sandbox Code Playgroud)

我将创建我自己的,UIBarButtonItem它将根据此函数何时触发而改变。

然后我将让它适当地触发显示模式。