2014-08-31 39 views
1

按钮是在故事板中创建的,我想添加一个动作。将动作添加到UIBarButtonItem Swift

self.cancel.action = NSSelectorFromString("cancel:") 

func cancel(sender: UIBarButtonItem) ->() { 
} 

这不行。由于

+0

欢迎来到SOF。确保你接受答案,如果它帮助你。 – Mundi 2014-08-31 09:52:51

回答

2

看我的。

  1. 将UIButton添加到UIBarbuttonitem。

    self.navigationController?.navigationBarHidden = false 
    
    //making a button 
    var button: UIButton = UIButton() 
    button.setImage(UIImage(named: "person-icon.jpg"), forState: .Normal) 
    button.frame = CGRectMake(0, 0, 25, 25) 
    button.targetForAction("actioncall", withSender: self) 
    button.addTarget(self, action: "actioncall", forControlEvents: UIControlEvents.TouchUpInside) 
    
    //making a UIBarbuttonItem on UINavigationBar 
    var rightItem:UIBarButtonItem = UIBarButtonItem() 
    rightItem.customView = button   
    self.navigationItem.rightBarButtonItem = rightItem 
    
  2. 一个初始化的UIBarButtonItem

    let rightNavItem = UIBarButtonItem(image: UIImage(named: "search1x"), landscapeImagePhone: nil, style: UIBarButtonItemStyle.Plain, target: self, action: "actioncall") 
    navigationItem.rightBarButtonItem = rightNavItem 
    
  3. OR

    let rightNavItem = UIBarButtonItem() 
    rightNavItem.action = "action call" 
    
    
    //Anticipated Method on clicking uibarbuttonitem 
    func actioncall(){ 
    } 
    
7

就在您的SWIFT类中创建一个功能类似于下面

@IBAction func cancel() { 
    // your code 
} 

,并且被Ctrl拖动从按钮到您的视图控制器,它在故事板连接。

+0

谢谢,它完美地认为我想编程。 =) 测试该工作后: self.cancel.action =选择( “取消”) FUNC取消(发件人:的UIBarButtonItem) - >(){} – 2014-08-31 10:20:07

+0

这是更好地写更少的代码。感谢您的投票和接受。 – Mundi 2014-08-31 10:21:46

+0

虽然这是真的,但我发现很难与其他开发人员共享故事板:将两个人的更改合并到Git中的同一个故事板(或任何版本控制系统)是非常可怕的。我的回应是在我可以的地方使用代码。 – dumbledad 2016-01-04 14:45:02

0
@IBAction func action() { 
    // your code 
}  

    var button = UIButton.buttonWithType(UIButtonType.System) as UIButton 
    button.frame = CGRectMake(100, 100, 100, 50) 
    button.backgroundColor = UIColor.greenColor() 
    button.setTitle("Button", forState: UIControlState.Normal) 
    button.addTarget(self, action: "action", forControlEvents: UIControlEvents.TouchUpInside) 
    self.view.addSubview(button) 
0

或者,如果选择在不同的类

let barBtn = UIBarButtonItem(title: nil, style: UIBarButtonItemStyle.Plain, target: self, action: #selector(CustomToolbarItemsClass.testSelector)) 


//This is in CustomToolbarItemsClass class 
@objc static func testSelector(){ 
print("Hello!") 
} 
相关问题