如何在UISplitViewController中命名后退按钮

我有UITableViewController (它的名字是News)和UIViewController (它的名字是DetailViewController)和UISplitViewController 。 我希望它在纵向使用iPad时显示后退按钮。 我按下了按钮,但我无法命名。 我写了下面的代码

 detailController.navigationItem.leftBarButtonItem = self.splitViewController?.displayModeButtonItem() detailController.navigationItem.leftItemsSupplementBackButton = true detailController.navigationItem.leftBarButtonItem?.title = navigationController?.topViewController.title 

但它没有显示按钮的名称。 我只看到箭头(箭头有效)。

我也在我的UITableViewController(新闻)中尝试了以下内容但它没有帮助我

在此处输入图像描述

我使用这个代码为不同的设备使用两个segue。

 override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath){ var screen = UIScreen.mainScreen().currentMode?.size.height if (UIDevice.currentDevice().userInterfaceIdiom == UIUserInterfaceIdiom.Pad) || screen >= 2000 && UIDevice.currentDevice().orientation.isLandscape == true && (UIDevice.currentDevice().userInterfaceIdiom == .Phone){ performSegueWithIdentifier("showDetailParse", sender: nil) self.dismissViewControllerAnimated(true, completion: nil) } else if (UIDevice.currentDevice().userInterfaceIdiom == .Phone) { performSegueWithIdentifier("showParse", sender: nil) } } 

我在iPad上的结果 在此处输入图像描述

我在iPhone上的结果 在此处输入图像描述

感谢Paul Hegarty和他在斯坦福大学的宝贵讲座,并在iTunes U上提供……在这个案例中他2013年的演讲题为“为iPhone和iPad开发iOS 7应用程序” ,特别是“第11讲桌面视图和iPad”。

如果您使用的是故事板,那么:

  • 打开主故事板并选择链接到Split View Controller组中Master View Controller的导航控制器;
  • 打开检查员;
  • 在标题View Controller下 ,针对属性Title ,输入您想要出现在“Back”按钮V形符号旁边的单词。

查看使用拆分视图控制器设置的Master Detail Xcode模板的屏幕截图…

界面构建屏幕截图,详细说明导航控制器的“标题”属性的位置

如果您在代码中实例化视图,那么:

  • 获取主视图控制器的导航控制器的引用;
  • 使用要在“后退”按钮V形符号旁边显示的单词的NSString设置该导航控制器的title属性。

顺便说一句,我强烈建议实现自动布局和大小类,删除后退按钮属性的文本,让大小类确定后退按钮的相应单词。

例如,根据问题……

删除“后退按钮”属性中的文本

解决方案:

以下是使用详细视图控制器的后退按钮解决问题的方法:

  • 对于任何被推入主导航控制器堆栈的视图控制器 ,请设置该视图控制器的 title 。 (在其viewDidLoad:方法中或在推送视图控制器的prepareForSegue:sender:方法中。)
  • 在子视图控制器的viewDidLoad:方法中设置主导航控制器的 title

例如,在MasterViewController.m

 - (void)viewDidLoad { [super viewDidLoad]; [self setTitle:@"Foo"]; } - (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; [[self navigationController] setTitle:[self title]]; } 

这将使详细视图控制器的后退按钮标题与顶部主视图控制器的标题保持同步。

到底是怎么回事:

UINavigationController ,它的rootViewControllerUINavigationItem都有一个title属性。

请注意, 为当前视图控制器显示的后退按钮实际上是前一个视图控制器的backButtonItem 。 (见图1-7导航栏结构)

UINavigationController将自动inheritance其根视图控制器的title值,但不会自动inheritance被推入其堆栈的任何其他控制器的标题 。 这就是为什么默认情况下, 详细视图控制器的后退按钮将始终显示导航控制器的视图控制器的标题。 您可以分配,初始化和推送多个子视图控制器,但只为标准拆分视图控制器的每一侧分配和初始化一个导航控制器。

此外,视图控制器的navigationItemtitle属性(其值将显示在导航栏中心的标签中) 不会从导航控制器inheritance其值 ,而是从视图控制器本身inheritance 。 如果将视图控制器的title属性设置为“Bar”,并将包含导航控制器的标题设置为“Foo”,则导航栏中心显示的标签将显示“Bar”。