2015-02-09 35 views
5

我想用自定义图像替换后退按钮中的文本。我如何在swift代码中做到这一点?我不想替换整个backbarbutton,因为我想保持回到最后一个视图的默认操作行为。我还想根据返回目标(基于storyboardId)的位置做一个switch语句,以便我可以根据视图显示不同的图像。如何更换/自定义故事板导航控制器中的后退按钮图像

这取代了图像,但它抹去了默认的后退按钮行为,我需要区分后面的目的地是什么,以便我可以显示右后方图像。

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

回答

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) 
} 
+0

那太酷了,几乎工程,2个问题:我该如何摆脱默认<符号,为什么需要添加e先前的控制器? – MonkeyBonkey 2015-02-10 00:49:40

+0

@MonkeyBonkey我不知道为什么你需要在前一个控制器中设置后退按钮,但这是它的方式......不幸的是,你不能摆脱后退按钮上的<符号。如果您想摆脱<符号,则必须执行leftBarButtonItem,然后调用自定义方法来关闭视图控制器。我会更新我的答案,告诉你如何做到这一点...一秒... – 2015-02-10 03:55:02

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]; 
相关问题