好吧,所以我创建一个UIPickerView以编程方式从TableCell中的UITextField触发(这可能是一个愚蠢的想法,但现在放弃它)。UIBarButtonItem在另一个类中创建的动作没有触发(swift)
我重构了它所有的代码放入了自己的类来简化房间我UIViewControler:
class SeveritySection {
let pickerToolbar: UIToolbar!
let picker: UIPickerView!
let textField: UITextField!
let tableCell: UITableViewCell!
var pickerOptions = Array<String>()
init() {
pickerToolbar = UIToolbar()
picker = UIPickerView()
tableCell = UITableViewCell()
textField = UITextField(frame: CGRectInset(tableCell.contentView.bounds, 15, 0))
}
func setOptions(optionsArray:Array<String>){
pickerOptions = optionsArray;
}
/// Initalises the toolbar with done on the rhs for picker
/// :param: colour of the toolbar
func createPickerToolbarwith(#colour:UIColor){
let flexSpace = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.FlexibleSpace, target: nil, action: nil)
let doneButton = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.Done, target: nil,action: Selector("doneButtonAction"))
let toolbarButtons = [flexSpace, doneButton];
pickerToolbar.sizeToFit()
pickerToolbar.setItems(toolbarButtons, animated: true)
pickerToolbar.backgroundColor = colour
}
func setupTextfield(){
textField.placeholder = "Choose Severity"
textField.inputView = picker
textField.inputAccessoryView = pickerToolbar
// self.severityText.keyboardType = UIKeyboardType.NumberPad
tableCell.addSubview(textField)
}
func setPickerDelegate(viewController: SinnerFormViewController){
picker.delegate = viewController
picker.dataSource = viewController
}
func setTextFieldTo(text:String){
self.textField.text = text
}
func doneButtonAction() {
textField.resignFirstResponder()
println("Done pressed")
}
所以后来我打电话在我的UIViewController
var severitySection = SeveritySection()
self.severitySection.setPickerDelegate(self)
self.severitySection.createPickerToolbarwith(colour: UIColor.whiteColor())
self.severitySection.pickerToolbar.delegate = self
self.severitySection.setupTextfield()
但在微调按下完成按钮工具栏不会触发任何事件。 我试着将viewcontroller设置为UIToolbar的代理,但是这并没有改变任何东西。我相信我所做的只是重构内联代码在我的视图控制器,但我想我错过了什么,或者隐式定义的东西不再存在
改变目标自我不为零的让doneButton =的UIBarButtonItem(barButtonSystemItem:UIBarButtonSystemItem.Done,目标:无,动作:选择( “doneButtonAction”)) – 2015-02-24 00:16:53
我需要让我的类也从NSObject继承?我在别处做了一些挖掘,以获取我收到的错误消息,我补充说,现在似乎一切正常? “Sibylv1 [61919:5684143] *** NSForwarding:警告:对象0x7fc1d355e700类'Sibylv1.SeveritySection'没有实现methodSignatureForSelector: - 提前出现故障 无法识别的选择器 - [Sibylv1.SeveritySection doneButtonAction] (lldb)” – 2015-02-24 01:17:47
您应该设置目标是你声明didButtonAction方法的类 – 2015-02-24 02:16:45