2015-04-06 28 views
1

我在uitableview中遇到了一個小問題。來自UITableViewCell中的文本字段的值 - iOS ObjC

我創建一個單元格屬性,我想抓住從他們的價值觀和發送到我的web服務:

@property (weak, nonatomic) IBOutlet UILabel *profileValueLabel; 
@property (weak, nonatomic) IBOutlet UITextField *profileTextfield; 

profileValueLabel只是文字,它是確定,但我需要profileTextField值和發送我的服務。

任何幫助?

+0

你什麼時候需要這些數據?你是否期望用戶在UITextField中輸入文本,並在寫完後發送它? – marosoaie 2015-04-06 13:27:22

+0

是的,他們打開tableview作爲配置文件編輯和填充textfields,然後他們會回來,數據將通過服務發送,但我不知道現在怎麼發送到 – Peter 2015-04-06 20:27:51

回答

0

您的profileTextfield屬性需要位於您的UITableViewCell子類的頭文件中。然後,在您的UITableViewDataSource控制器中,一旦確定了要獲取其文本字段文本的單元的索引路徑,就可以使用[myTableView cellForRowAtIndexPath:yourCellsIndexPath].profileTextfield.text

如果您希望在用戶輸入數據後立即獲取profileTextfield屬性,則需要在UITableViewCell子類和相應的委託屬性中創建一個協議。然後,您制定一個協議方法,如-(void)tableViewCell:(myUITableViewCellSubclass *)cell didEndEditingProfileTextFieldWithText:(NSString *)text;然後在您的UITableViewCell子類中,將profileTextField的委託設置爲您的UITableViewCell子類,並使用textFieldDidEndEditing:textFieldWillReturn:委託方法。無論您使用哪種方法,請撥打[self.delegate tableViewCell:self didEndEditingProfileTextFieldWithText:self.profileTextfield.text]協議方法。你的tableViewController應該處理這個方法,你可以做任何你需要的。

1

最好的辦法是讓您的UITableViewCell子類符合UITextFieldDelegate,然後爲您的表視圖單元格子類創建一個協議(委託),當調用UITextField didEndEditing方法時觸發並傳遞表視圖單元格本身可能還有要發送到Web服務的文本數據)放入委託方法中,以便在您的視圖控制器中,您可以根據表格中的單元格確定索引路徑。然後,在您的視圖控制器中,只要委託方法被觸發,就可以將每個單元格上的數據發送到Web服務。這可能是最乾淨的方法,但最好將此邏輯封裝在表視圖類本身中,以便保持視圖控制器更薄,並使兩個組件之間的通信更加明確。

0

我希望你已經實現了UITableView的代表,onE方法 NSString * tempString1; 的NSString * tempString2 - (空)的tableView:(UITableView的*)的tableView didSelectRowAtIndexPath方法:(NSIndexPath *)indexPath {

UITableViewCell *cell1 = [tableView cellForRowAtIndexPath:indexPath]; 
tempString1= cell1.textLabel.text; //<-- your label 

*tempString2= cell1.textfeild.text ; // u can access the value , 

} 問題的第二部分//
您需要嵌入tempString和tempString2變量,服務請求。

+0

和indexPath?它不是我整型像數組...我需要例如第三個文本域。 – Peter 2015-04-07 18:00:18

+0

我不確定你想說什麼在這裏,我看到如果你想要做以上操作行號第三 你可以把像if(indexpath.row == 2){ //以上代碼 } 或者如果你想爲anyrow 的第三個文本框做這個,那麼你可以使用上面的代碼,只需要改變textlabel/textfeild的名字就可以了 – 2015-04-08 07:28:17

相關問題