0

我在自定義tableview單元格中有一個UITextField。在點擊文本區域時,我會顯示一個包含pickerview的彈出窗口。我需要將選擇從pickerview設置爲文本字段的文本。我從textDidBeginEditing方法顯示彈出窗口。如何將選擇從pickerView的didSelect方法傳遞到文本字段?將UIPickerView選項設置爲UITableViewCell中的UITextField

通過設計,整個事情是在TableViewController中實現了textfield和pickerview委託方法。

謝謝!

回答

0

只需將UIPickerView的委託設置爲具有您的UITableView的viewcontroller即可。通過UIPickerView的didSelect(在tableview的viewcontroller中實現),您可以簡單地使用pickerview的數據源來填充文本字段。

要從實現代碼如下得到您的自定義單元格,你只需做:

CustomTableViewCell *thisCell = (CustomTableViewCell*)[tableView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:row inSection:section]]; 

然後,設置文本框在有你想要的文字:

thisCell.textField.text = @"text"; 
+0

謝謝隊友!我想知道我這麼久錯過了這件事情!只需將包含單元格的特定textField的indexPath存儲在cellForRowAtIndexPath方法中,並按照pickerView didSelect方法中的要求將存儲的indexPath作爲參數傳遞給(CustomTableViewCell *)[self.tableView cellForRowAtIndexPath:storedIndexPath]; – Bourne 2011-05-18 11:39:15

+0

不客氣...這是一個巧妙的把戲,我同意:) – Sid 2011-05-18 16:47:08

0

你能提供更多的信息嗎? tableView:cellForRowAtIndexPath:是什麼樣的?我很好奇你正在編輯的對象在哪裏可用。

有幾個方法我能想到的...

  1. 坐落在文本框(或多個)標籤,並用它來找到特定文本框被編輯
  2. 設置委託的pickerView到表格單擊並讓它處理文本更改
0

我認爲最好的辦法是將UITextField的inputView屬性設置爲UIPickerView。此視圖將顯示instead of the keyboard

當一個UITableViewCell滾動到一個表的邊界之外時,它可能會被解除分配。因此,存儲對調用其textFieldDidBeginEditing:委託方法的UITextField的引用可能會導致EXC_BAD_ACCESS異常。

解決方法是修改單元的模型,它由視圖控制器存儲在一個數組中。當單元格初始化時,它應該將文本字段的值設置爲其模型對象中的對應值。最後,單元格應通過KVO觀察其模型的更改並相應地更新文本字段的值。

相關問題