在 UITableView 中为不同的 UITextField 设置 inputView
Setup inputView for different UITextFields in UITableView
我在自定义单元格中有 UITableView
和 UITextField
。
对于 UITextField
我使用自定义 inputView
:
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier(reuseIdentifier, forIndexPath: indexPath) as! Item
cell.price.text = ""
cell.price.delegate = self
return cell
}
func textFieldDidBeginEditing(textField: UITextField) {
textField.inputView = keyboardView
itemPrice = textField
}
func numberWasTapped(number: String!) {
itemPrice.insertText(number!)
}
使用委托方法:
@IBAction func keyTaped(sender: UIButton) {
switch sender.tag {
case 112:
if !isCommaWasPressed {
isCommaWasPressed = true
sender.enabled = false
self.delegate?.numberWasTapped(sender.titleLabel!.text)
}
break
default:
self.delegate?.numberWasTapped(sender.titleLabel!.text)
}
我的习惯 inputView
是计算器键盘,键盘中包含所有逻辑 class:它控制是否按下逗号以及在逗号后输入了多少个数字。
例如,如果按下逗号,则键盘 class.
中的 commaButton.enabled = false
当我切换到另一个 UITextField
.
时,我不知道如何在键盘 class 中设置 commaButton.enabled = true
我试过 textField.reloadInputViews()
textFieldDidBeginEditing(_:)
方法,但它不起作用。
我想,我应该从 UITextField
获取信息并将其传递给键盘的 class 逻辑。但是我不知道怎么做。
我找到了解决方案。
我将键盘逻辑移至 main ViewController,无需将 textField 数据传递至 Keyboard class。
我在自定义单元格中有 UITableView
和 UITextField
。
对于 UITextField
我使用自定义 inputView
:
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier(reuseIdentifier, forIndexPath: indexPath) as! Item
cell.price.text = ""
cell.price.delegate = self
return cell
}
func textFieldDidBeginEditing(textField: UITextField) {
textField.inputView = keyboardView
itemPrice = textField
}
func numberWasTapped(number: String!) {
itemPrice.insertText(number!)
}
使用委托方法:
@IBAction func keyTaped(sender: UIButton) {
switch sender.tag {
case 112:
if !isCommaWasPressed {
isCommaWasPressed = true
sender.enabled = false
self.delegate?.numberWasTapped(sender.titleLabel!.text)
}
break
default:
self.delegate?.numberWasTapped(sender.titleLabel!.text)
}
我的习惯 inputView
是计算器键盘,键盘中包含所有逻辑 class:它控制是否按下逗号以及在逗号后输入了多少个数字。
例如,如果按下逗号,则键盘 class.
commaButton.enabled = false
当我切换到另一个 UITextField
.
commaButton.enabled = true
我试过 textField.reloadInputViews()
textFieldDidBeginEditing(_:)
方法,但它不起作用。
我想,我应该从 UITextField
获取信息并将其传递给键盘的 class 逻辑。但是我不知道怎么做。
我找到了解决方案。 我将键盘逻辑移至 main ViewController,无需将 textField 数据传递至 Keyboard class。