首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UISplitViewController displayModeButtonItem()

UISplitViewController displayModeButtonItem()
EN

Stack Overflow用户
提问于 2014-09-16 00:27:11
回答 9查看 7.6K关注 0票数 17

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

代码语言:javascript
复制
func displayModeButtonItem() -> UIBarButtonItem?
EN

回答 9

Stack Overflow用户

发布于 2014-10-05 05:12:21

我自己解决这个问题的方法是:

代码语言:javascript
复制
UIBarButtonItem(image: UIImage(named:"home"),
            landscapeImagePhone: UIImage(named:"home"),
            style: UIBarButtonItemStyle.Plain,
            target: splitViewController.displayModeButtonItem().target,
            action: splitViewController.displayModeButtonItem().action)

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

票数 21
EN

Stack Overflow用户

发布于 2014-11-07 10:25:43

在我的解决方案中,我结合了josh和Voluntas88的解决方案。

首先需要使用UISplitViewControllerDelegate方法func targetDisplayModeForActionInSplitViewController(_ svc: UISplitViewController) -> UISplitViewControllerDisplayMode,然后添加一个定制的UIBarButtonItem。以下是我的解决方案:

代码语言:javascript
复制
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
    }
票数 5
EN

Stack Overflow用户

发布于 2015-02-25 01:18:06

在targetDisplay中这样做是可行的,但在旋转结束时可以看到按钮的移除/添加,最好在splitViewController:willChangeToDisplayMode:displayMode中这样做,但请记住,这也应该在viewDidLoad上处理,因为该委托方法在启动时不会被调用。

代码语言:javascript
复制
 - (void)splitViewController:(UISplitViewController *)svc willChangeToDisplayMode:(UISplitViewControllerDisplayMode)displayMode
    {
        if (displayMode == UISplitViewControllerDisplayModePrimaryHidden || displayMode == UISplitViewControllerDisplayModePrimaryOverlay) {
            self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Lista" style:UIBarButtonItemStylePlain target:self.splitViewController.displayModeButtonItem.target action:self.splitViewController.displayModeButtonItem.action];
        } else {
           self.navigationItem.leftBarButtonItem = nil;
        }
    }
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25852593

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档