设置返回按钮的标题

它一般是由一个左箭头加上一级ViewController的标题构成。如果我们想将这个标题文字修改成其它内容,甚至是设置为空,则需要额外想办法。 
最省事的办法是将上一级ViewController的title修改为空或其它。但这会带来一个问题,即上一级ViewController的标题也会被修改,如果这个ViewController是位于TabBarController中,则TabBarItem的标题也会被修改。

还有一种办法是在viewDidAppear方法中使用例如这样的语句: 
self.navigationController?.navigationBar.backItem?.title=”“

但这句代码只有在viewDidAppear方法中才好使。如果是放在viewDidLoad或者viewWillAppear中的话就不行了。 
此外,用在viewDidAppear中的话,返回按钮的标题会有短暂的时间才会被修改,也就是说原来的标题文本在很短的时间内(零点几秒)仍然会显示。

此外就只有定制导航栏的左按钮了,用一张箭头图片作为按钮的背景图。这样做费时费力不说,效果也和系统提供的返回按钮不太一致。具体有两点: 
一、左按钮的位置要比返回按钮的位置稍微靠后一点(仔细看才能区分这一点,大概有20个像素的差别)。 
二、左按钮不提供默认的popViewController行为,需要我们自己编写按钮的事件代码。

这里介绍一种两全其美的方法,一不需要自定义左按钮,二完全使用系统默认的返回按钮,仅仅是按钮的标题被修改了。 
代码如下:

let viewControllerArray = self.navigationController!.viewControllers 
let previousViewControllerIndex = (viewControllerArray as NSArray).indexOfObject(self)-1

if (previousViewControllerIndex >= 0) { 
if let previous = viewControllerArray[previousViewControllerIndex] as? UIViewController{ 
previous.navigationItem.backBarButtonItem = UIBarButtonItem(title: “”, style: UIBarButtonItemStyle.Plain, target: self, action: nil) 

posted @ 2015-11-06 15:28  小毛驴  阅读(639)  评论(0编辑  收藏  举报