2014-08-31 61 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!") 
} 
相關問題