我有一些像这样加载的tableview单元..
此处,qty
字段从选择器字段中获取值。但问题是虽然两个字段都显示了选择器字段,但是在选择器字段中选择的数据仅在第二个字段和第一个字段中显示,但是我从选择器字段中选择一个值,该值是显示在第二个选择器字段而不是第一个。
我的选择器视图在viewDidLoad
中定义了10个值,如此...
self.noOfItems = ["1","2","3","4","5","6","7","8","9","10"]
选择器视图已在我的tableview cellForRowAt
中定义,如此...
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell: sellTableViewCell = tableView.dequeueReusableCell(withIdentifier: "sellProductIdentifier") as! sellTableViewCell
cell.delegate = self
let pickerView = UIPickerView()
pickerView.delegate = self
cell.qtyPickerField.inputView = pickerView
cell.qtyPickerField.text = noOfItems[0]
if let cell = cell.qtyPickerField.superview?.superview as? sellTableViewCell {
myCell = cell
}
return cell
}
我的选择器视图方法就像这样......
//Picker view methods
func numberOfComponents(in pickerView: UIPickerView) -> Int {
return 1
}
func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
return noOfItems.count
}
func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
return noOfItems[row]
}
func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
myCell.qtyPickerField.text = noOfItems[row]
}
答案 0 :(得分:0)
我正在给你提示。
因为您在代码中添加了myCell = cell
表示您的最后一个单元格已添加到 myCell 中,所以此处您的第二个单元格是最后一个单元格,如果您希望通过选择器编辑值,那么您可以仅更改最后一个单元格文本字段的值而不是特定的选定单元格。
您需要在 myCell 中添加特定单元格而不是最后一个单元格。您可以使用delegate
UITextField
方法获取特定单元格
if let cell = myTextField.superview.superview as? sellTableViewCell {
myCell = cell
}
现在您可以使用myCell.qtyPickerField....
答案 1 :(得分:0)
将以下行添加到func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
cell.qtyTxtFld.tag = indexPath.row
cell.qtyTxtFld.addTarget(self, action: #selector(self.PickerViewClicked(_:)), for: UIControlEvents.editingDidBegin)
然后将以下行添加到您的班级
func PickerViewClicked(_ sender : UITextField)
{
myindexPath = IndexPath(row: sender.tag, section: 0)
let cell = self.theTableView.cellForRow(at: myindexPath) as! sellTableViewCell
cell.qtyTxtFld.inputView = self.thePickerView
}
然后使用以下代码行
func numberOfComponentsInPickerView(_ pickerView: UIPickerView) -> Int
{
return 1
}
func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int
{
return pickerArray.count
}
func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String?
{
return pickerArray[row] as? String
}
func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int)
{
let cell = self.theTableView.cellForRow(at: myindexPath) as! sellTableViewCell
cell.qtyTxtFld.text = pickerArray[row] as? String
cell.qtyTxtFld.resignFirstResponder()
}
希望这能解决您的问题:)