0

我尝试实施指南并在内部实施:

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

但分配'inputView'是我坚持的地方。

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

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

因此,我尝试按照本指南重新声明 tableView 的 inputView,但我似乎无处可去。

帮助。

4

1 回答 1

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? 传递选定的行以操作该行中的数据。

于 2016-03-31T21:35:38.213 回答