在故事板中配置视图控制器导航条的backBarButtonItem
将界面按钮项拖放到Interface Builder中故事板的视图控制器导航栏上很容易。这样,您可以设置视图控制器的导航项目的出口leftBarButtonItem
和rightBarButtonItem
。但也有一个backBarButtonItem
插座,并且如何设置它并不明显。如何使用Interface Builder设置自定义后台按钮项目?在故事板中配置视图控制器导航条的backBarButtonItem
选择要更改其导航项目视图控制器。显示视图控制器标识的黑色条变为其引用对象的图标化托盘。
将对象库中的酒吧按钮项目拖放到托盘上。
- 在视图控制器的导航项目在左手侧的主要目的盘上单击右键。将新添加的按钮连接为导航项目的
backBarButtonItem
插座。
- 选择栏按钮,并在你的属性检查器选择的方式进行配置。
在界面生成器中,您可以更改导航项返回按钮的标题。
以编程方式,您可以在视图控制器的viewDidLoad方法中设置自定义后退按钮。在这个例子中,我们将按钮的图像设置为名为“customImage.png”的图像:
- (void)viewDidLoad
{
[super viewDidLoad];
UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithTitle:@"Custom" style:UIBarButtonItemStyleBordered target:self action:nil];
// Set custom image here
backButton.image = [UIImage imageNamed:@"customImage.png"];
self.navigationItem.backBarButtonItem = backButton;
}
如@wcochran如上所述,与viewControllers工作时被推到一个navigationController的堆栈,该backBarButtonItem出口已经有线和不能改变。此外,选择儿童VC的navigationItem并更改IB中的后退按钮文本不会达到您所期望的。
现在你可能会认为替换孩子VC的backBarButtonItem可以解决问题,但事实并非如此。令人迷惑的是,如果你想设置一个孩子VC的后退按钮的标题,你必须设置其父的后退按钮标题,像这样(!):
- (void)viewWillAppear:(BOOL)animated // in the parent VC!
{
UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithTitle:@"Back" style:UIBarButtonItemStylePlain target:nil action:nil];
self.navigationItem.backBarButtonItem = backButton;
}
这不会做父VC上的任何东西。事实上,如果父级是navigationController的RootViewController,则根本不会有后退按钮。但孩子会继承(或拾取)您创建的后退按钮。
这只适用于直接子VC,所以如果你想通过navigationController的堆栈保持标签下来,你需要将它设置在每个父级。
感谢#iphonedev中的@wiliz向我解释这一点。
我很早就回到iOS开发中,尽管我们需要做出诸如此类的黑客攻击, iOS 3.1.2的情况并没有太大的改变。谢谢你的回答。 – 2013-08-22 08:58:38
正如@AdamBlock指出的,你必须在父VC中设置正确的东西。
他显示了如何以编程方式执行此操作。在界面构建器中也可以这样做。
- 选择父VC
- 选择导航项目
- 打开属性检查器
- 设置标题的后退按钮。
我的导航项目已经有了一个'backBarButtonItem'连线(因为它是push segue的目的地)并且它是不可更改的。似乎没有办法真正改变后退按钮的标题 - 在属性检查器中设置“后退按钮”字段不起作用。 – wcochran 2012-07-19 18:45:18
如果您正在寻求解决方案,并且您发现以编程方式执行此操作令人不快,我鼓励您为此创建一个单独的问题。不幸的是,你的情况我还没有遇到过。 – warrenm 2012-07-19 19:24:34
@wcochran - 这也发生在我身上。这是Xcode中的一个小疏忽,解决方法是在对象库中选择UIBarButtonItem,然后将其拖到UINavigationItem的左侧栏按钮项上。你会看到一个蓝色的矩形出现,然后它会设置它,你可以像往常一样配置它。 – 2014-12-07 21:41:19