2015-06-22 119 views
0

我有这个透明的导航栏,我可以添加一个自定义图标(下面的代码)。然而,它似乎没有回应点击,任何人都有任何想法,为什么这可能会导致?无法点击自定义添加UIBarButtonItem

我在一个UINavigationController里面加入了一个UIViewController。

var button: UIButton = UIButton() 
    button.setImage(UIImage(named: "customBack"), forState: .Normal) 
    button.frame = CGRectMake(0, 0, 40, 40) 
    button.imageEdgeInsets = UIEdgeInsets(top: 10, left: 10, bottom: 10, right: 10) 
    button.targetForAction("doAction:", withSender: button) 
    button.backgroundColor = UIColor.brownColor() 

    var leftItem:UIBarButtonItem = UIBarButtonItem() 
    leftItem.customView = button 
    self.navigationItem.leftBarButtonItem = leftItem 
    self.navigationItem.leftBarButtonItem!.action = "doAction:" 

    self.navigationController!.navigationItem.leftBarButtonItem = leftItem 

我知道我不应该自己添加项目,但在这种情况下,它是必要的。在加载视图或w/e之前,图标即时添加。

+0

检查操作方法是否定义为func doActi on(sender:UIBarButtonItem){}并在其中添加一个printf。也许你必须隐藏默认的后退按钮self.navigationItem.hidesBackButton = true –

+0

我有一个断点内,这会做得很好,但我发现已经有什么错在答案。 –

回答

0

始终只是发表后,我发现:

我用

button.targetForAction("doAction:", withSender: button) 

虽然我应该做的事情:

button.addTarget(self, action: "doAction:", forControlEvents: .TouchUpInside) 
1

要尝试...

var ysBackButton:UIButton = UIButton(frame:CGRectMake(0, 0, kNavBtnSize, kNavBtnSize)) 
ysBackButton.setImage(UIImage(named: kBack), forState: UIControlState.Normal) 
ysBackButton.addTarget(self, action: Selector("backButtonAction"), forControlEvents:UIControlEvents.TouchUpInside) 
var leftBarButton:UIBarButtonItem = UIBarButtonItem(customView: ysBackButton) 
self.navigationItem.leftBarButtonItem = leftBarButton