如何在storyboard navigationcontroller中替换/自定义后退按钮图像

时间:2015-02-09 23:56:44

标签: ios uinavigationcontroller uistoryboard

我想用自定义图像替换后退按钮中的文本。我怎么能在swift代码中做到这一点?我不想替换整个后栏按钮,因为我想保留返回上一个视图的默认操作行为。我还想根据返回目的地(基于storyboardId)的位置做一个switch语句,以便我可以根据视图显示不同的图像。

这会替换图像,但会消除默认的后退按钮行为,我需要记录后面的目的地,以便我可以显示右后方的图像。

self.navigationItem.leftBarButtonItem = 
 UIBarButtonItem(image:StyleKit.imageOfMap, style:.Plain, target:self, action:nil);

2 个答案:

答案 0 :(得分:10)

尝试更改leftBarButtonItem

self.navigationItem.leftBarButtonItem = 
    UIBarButtonItem(image:StyleKit.imageOfMap, style:.Plain, target:self, action:nil);

backBarButtonItem

self.navigationItem.backBarButtonItem = 
    UIBarButtonItem(image:StyleKit.imageOfMap, style:.Plain, target:self, action:nil);

以便利用backBarButtonItem的默认操作。

然后将那行代码放在视图控制器之前那个你喜欢自定义后退按钮的代码中。

修改:如果您不想要"<"要显示在按钮上的符号,您实际上必须使用leftBarButtonItem然后在单独的方法中关闭视图控制器,例如:

    self.navigationItem.leftBarButtonItem = 
        UIBarButtonItem(image:StyleKit.imageOfMap, style:.Plain, target:self, action:"backButtonPressed:");

}

func backButtonPressed(sender:UIButton) {
    navigationController?.popViewControllerAnimated(true)
}

答案 1 :(得分:0)

你在找这样的东西吗?

btn = [UIButton buttonWithType:UIButtonTypeCustom];    
[btn setImage:[UIImage imageNamed:@"YOURIMAGE.png"] forState:UIControlStateNormal];    
btn.frame = CGRectMake(0, 0, 30, 30);
[btn addTarget:self action:@selector(youraction:) forControlEvents:UIControlEventTouchUpInside];  

self.navigationItem.leftBarButtonItem = [[[UIBarButtonItem alloc] initWithCustomView:btn]autorelease];