如何通过UITableViewRowAction swift使用inputview

时间:2016-03-31 20:49:51

标签: ios swift uitableview inputview uitableviewrowaction

我尝试了实施this指南并在其中加入了它:

let doneItem = UITableViewRowAction(style: .Normal, title: "  Done  ") { (action, indexPath) -> Void in }

但指定了' inputView'是我被困的地方。

我尝试将其分配到tableView的输入视图,在文档中,它说:

"此只读属性的值为nil。需要自定义视图来收集用户输入的响应器对象应将此属性重新声明为读写,并使用它来管理其自定义输入视图。"

所以我尝试按照this指南重新声明tableView的inputView,但我似乎无处可去。

帮助。

1 个答案:

答案 0 :(得分:0)

我想出了一个解决方法。如果有更好的方法来实现这一点,我想知道。但如果有人也在寻找这个解决方案,我就是这样做的。

我通过界面构建​​器添加了一个UITextView,并检查了属性检查器下视图类别中的隐藏属性,以便用户不会意外激活文本字段。然后:

func datePickerSetupTest() {
    let dateView = UIView(frame: CGRectMake(0, 100, 320, 160))
    datePicker = UIDatePicker(frame: CGRectMake(0, 0, 320, 160))
    datePicker.datePickerMode = .Date
    dateView.addSubview(datePicker)
    inputTextField.inputView = dateView
    let doneButton = UIButton (frame: CGRectMake(100, 100, 100, 44))
    doneButton.setTitle("Done", forState: UIControlState.Normal)
    doneButton.addTarget(self, action: "datePickerSelected", forControlEvents: UIControlEvents.TouchUpInside)
    doneButton.backgroundColor = UIColor .blueColor()
    inputTextField.inputAccessoryView = doneButton
}
func datePickerSelected() {
    print("selectedRow: \(selectedRow!)")
    inputTextField.resignFirstResponder()
}

并在UITableViewRowAction中:

 tableView.editing = false
 self.selectedRow = indexPath.row
 self.inputTextField.becomeFirstResponder()

我正在使用变量selectedView:Int?传递选定的行来操作该行中的数据。