2016-09-08 6 views
0

У меня есть массив из UIToolbar элементов, которые показывают, когда inputField становится первым ответчиком.Есть ли способ вызвать функцию с параметрами с помощью #selector в Swift

//... code 
toolBar.items = [ 
      UIBarButtonItem(title: "Button 1", style: UIBarButtonItemStyle.Plain, target: self, action: #selector(myFunction))] 

myInputField.inputAccessoryView = toolBar 

Это можно назвать myFunction из приведенного выше примера с параметром?

Что-то вроде ...

... #selector(myFunction(someParameter))) 

ответ

1

Подобно UIButton, параметры могут быть переданы с помощью атрибута UIBarButtonItemtag.

override func viewDidLoad() { 
    super.viewDidLoad() 

    let toolBar = UIToolbar() 
    let firstButton = UIBarButtonItem(title: "Button 1", style: UIBarButtonItemStyle.Done, target: self, action: #selector(myFunction)) 
    let secondButton = UIBarButtonItem(title: "Button 2", style: UIBarButtonItemStyle.Done, target: self, action: #selector(myFunction)) 
    firstButton.tag = 1 
    secondButton.tag = 2 
    toolBar.items = [ firstButton, secondButton ] 
    toolBar.sizeToFit() 
    textField.inputAccessoryView = toolBar 
} 

func myFunction(sender: UIBarButtonItem) { 
    print("Tapped: \(sender.tag)") 
} 

касание кнопки принты теги баттона в этом примере:

Tapped: 1 // Tap button 1 
Tapped: 2 // Tap button 2 
+1

Большого спасибо за вашу помощь. –