ios - displayModeButtonItem 实际上做了什么?

标签 ios objective-c xcode back-button master-detail

我正在学习使用 Xcode 6.3 和 iOS SDK 8.3 的基本控件和模板。在我创建了一个Master-Detail View 模板后,我尝试更改detailview 的导航栏 上的后退按钮的标题。

我首先在 Storyboard 的 masterview 上更改了导航栏的标题,它似乎在 iPhone6 模拟器上工作:首先加载 masterview,其标题已更改;然后在按下详细 View 后,后退按钮的标题也会更改。

但是在iPad air模拟器上,奇怪的事情发生了:无论我用什么方法,detailview的backbutton的标题仍然是“Master”(iPad是纵向的)。

在使用了stackoverflow中的几种方法后,我深入研究了代码,发现了两个可以控制detailview中后退按钮行为的地方:

  1. (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 在 AppDelegate.m 中:

    navigationController.topViewController.navigationItem.leftBarButtonItem = splitViewController.displayModeButtonItem;
    
  2. (void)prepareForSegue:(UIStoryboardSegue *)segue 发件人:(id)MasterViewController.m 中的发件人:

    controller.navigationItem.leftBarButtonItem = self.splitViewController.displayModeButtonItem;
    

似乎 splitViewController.displayModeButtonItem 在折叠场景(iPhone)中充当后退按钮,在 iPad 中也像在纵向方向上触发 PrimaryOverlay 模式,甚至在 iPad 中在横向方向上消失。

我很好奇 displayModeButtonItem 是如何控制它的行为的(比如什么时候出现,它显示什么文本),所以我可以在不同的情况下对它进行自定义更改(我试过修改文本属性或替换它用另一个按钮,一切都失败了)。

最佳答案

来自 Apple 自己的文档:

A system bar button item whose action will change the displayMode property depending on the result of targetDisplayModeForActionInSplitViewController:. When inserted into the navigation bar of the secondary view controller it will change its appearance to match its target display mode. When the target displayMode is PrimaryHidden, this will appear as a fullscreen button, for AllVisible or PrimaryOverlay it will appear as a Back button, and when it won't cause any action it will become hidden.

- (UIBarButtonItem *)displayModeButtonItem NS_AVAILABLE_IOS(8_0);

该行为由 Apple 自动为您处理,它还会在横向模式下的 iPhone 6 plus 上显示一个“展开”按钮

关于ios - displayModeButtonItem 实际上做了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29693909/

相关文章:

ios - SpriteKit : Getting Audio to stop playing

objective-c - 我的 OS X 应用不想打开它创建的文件

swift - 如何使用 UITableViewAutomaticDimension?

iphone - NSContactsUsageDescription 不起作用

ios - 错误域=IDEProvisioningErrorDomain 代码=9

iOS - 半透明模态视图 Controller

ios - MFMessageComposeViewController 发送失败

c++ - Xcode C++ 开发,需要说明

iOS - 检索和保存游戏分数

objective-c - 如何确定用户在 objective c 中完成了 tableview 的垂直滚动