2015-02-27 3 views
2

У меня есть UIPickerView, и я добавляю UIToolBar с 2 UIBarButtonItems.UIBarButtonItem не доступен для просмотра в UIToolBar

var toolBar = UIToolbar() 
toolBar.frame.origin.y = -40 
toolBar.barStyle = UIBarStyle.Default 
toolBar.translucent = true 
toolBar.tintColor = UIColor(red: 76/255, green: 217/255, blue: 100/255, alpha: 1) 
toolBar.sizeToFit() 


var doneButton = UIBarButtonItem(title: "Done", style: UIBarButtonItemStyle.Bordered, target: self, action: "donePicker") 
var spaceButton = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.FlexibleSpace, target: nil, action: nil) 
var cancelButton = UIBarButtonItem(title: "Cancel", style: UIBarButtonItemStyle.Bordered, target: self, action: "canclePicker") 

toolBar.setItems([cancelButton, spaceButton, doneButton], animated: false) 
toolBar.userInteractionEnabled = true 

pickerView.addSubview(toolBar) 
pickerView.bringSubviewToFront(toolBar) 
view.bringSubviewToFront(toolBar) 

Проблема заключается в том, что, когда я пытаюсь нажать на на UIBarButtonItem, это не срабатывает, она даже не признает его, он просто нажимает на ячейку под ней.

enter image description here

+0

Единственная причина, я вижу это toolBar.frame.origin.y = -40. Панель инструментов находится за пределами рамки pickerview. – HMHero

+0

Я пробовал его с y = 0, и его то же самое, только что на этот раз подбирается под ним подбирается pickerView ... –

+0

Вы попробовали pickerView.inputAccessoryView = toolBar вместо того, чтобы добавлять его в качестве подзаголовка? – HMHero

ответ

3

Вы можете попробовать это коды.

var textField = UITextField(frame: CGRectMake(20, 50, view.width - 40, 30)) 
    textField.backgroundColor = UIColor.redColor() 
    view.addSubview(textField) 

    var pickerView = UIPickerView(frame: CGRectMake(0, 200, view.width, 300)) 
    pickerView.backgroundColor = UIColor.whiteColor() 
    pickerView.showsSelectionIndicator = true 



    var toolBar = UIToolbar() 
    toolBar.barStyle = UIBarStyle.Default 
    toolBar.translucent = true 
    toolBar.tintColor = UIColor(red: 76/255, green: 217/255, blue: 100/255, alpha: 1) 
    toolBar.sizeToFit() 


    var doneButton = UIBarButtonItem(title: "Done", style: UIBarButtonItemStyle.Bordered, target: self, action: "donePicker") 
    var spaceButton = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.FlexibleSpace, target: nil, action: nil) 
    var cancelButton = UIBarButtonItem(title: "Cancel", style: UIBarButtonItemStyle.Bordered, target: self, action: "canclePicker") 

    toolBar.setItems([cancelButton, spaceButton, doneButton], animated: false) 
    toolBar.userInteractionEnabled = true 

    textField.inputView = pickerView 
    textField.inputAccessoryView = toolBar 
+0

Работал как шарм. –

+0

Yep спасибо кучи, это помогло мне и работает! Моя проблема заключалась в том, что у меня не было панели textField.inputAccessoryView =, и я вместо этого добавлял UIToolbar в качестве подсмотра UIPicker. Теперь моя кнопка «Готово» стреляет как чемпион !!! – Aaron

1

Я считаю, что вам нужно поднять сборщик и панель инструментов с помощью стандартного механизма UIResponder или обмануть, используя скрытую UITextField, чтобы получить тот же результат.

Смотрите мой обновленный ответ на исходный вопрос:

Add buttons to UIPickerView - Swift 1.2

Смежные вопросы