displayModeButtonItem实际上做了什么?

时间:2015-04-17 08:19:23

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

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

我首先在故事板中的masterview上更改了导航栏的标题,它似乎在iPhone6模拟器上工作:首先加载masterview,其标题已被更改;然后在按下详细信息视图后,后退按钮的标题也会更改。

但是当谈到iPad空气模拟器时,奇怪的事情发生了:无论我使用什么方法,detailview的backbutton的标题仍然是“Master”(iPad是纵向)。

在我使用stackoverflow中的几个方法之后,我深入研究代码并找到两个可以控制详细视图中后退按钮行为的地方:

  1. (BOOL)应用程序:(UIApplication *)应用程序didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 在 AppDelegate.m

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

    controller.navigationItem.leftBarButtonItem = self.splitViewController.displayModeButtonItem;
    
  3. 似乎splitViewController.displayModeButtonItem就像崩溃场景(iPhone)中的后退按钮,在iPad中纵向触发PrimaryOverlay模式,甚至在iPad中以横向方向消失。

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

1 个答案:

答案 0 :(得分:1)

来自Apple自己的文档:

  

系统栏按钮项,其操作将更改displayMode   财产取决于结果   targetDisplayModeForActionInSplitViewController :.插入时   它会改变它的辅助视图控制器的导航栏   外观以匹配其目标显示模式。当目标   displayMode是PrimaryHidden,它将显示为全屏按钮,   对于AllVisible或PrimaryOverlay,它将显示为“后退”按钮,并且   当它不会导致任何动作时,它将被隐藏。

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

Apple会自动为您处理此行为,它还会显示"展开" iPhone 6上的按钮加横向模式