如何在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
,它的rootViewController
和UINavigationItem
都有一个title
属性。
请注意, 为当前视图控制器显示的后退按钮实际上是前一个视图控制器的backButtonItem
。 (见图1-7导航栏结构)
UINavigationController
将自动inheritance其根视图控制器的title
值,但不会自动inheritance被推入其堆栈的任何其他控制器的标题 。 这就是为什么默认情况下, 详细视图控制器的后退按钮将始终显示主导航控制器的根视图控制器的标题。 您可以分配,初始化和推送多个子视图控制器,但只为标准拆分视图控制器的每一侧分配和初始化一个导航控制器。
此外,视图控制器的navigationItem
的title
属性(其值将显示在导航栏中心的标签中) 不会从导航控制器inheritance其值 ,而是从视图控制器本身inheritance 。 如果将视图控制器的title
属性设置为“Bar”,并将包含导航控制器的标题设置为“Foo”,则导航栏中心显示的标签将显示“Bar”。