正如人Schreurs已經說明你需要實現UITextFieldDelegate協議到你的viewController(與UITableViewDataSource一起),看看那些在文檔中學習更多的東西你可以和他們一起做。但是這比在你的視圖中使用不同的UITextFields更棘手。
你必須考慮一個事實,即當一個單元格離開tableview的可見範圍時,它將被釋放或重用。因此,例如,如果單元格1包含文本字段,則在其中寫入內容,然後滾動到單元格15,則可能會獲得單元格1和其內容的文本字段的單元格。如果您準備好要重用的單元格,清空textFields,則必須將該數據保存在某處,以便將其重新輸入到適當的單元格中。畢竟,你會刮你的頭什麼textField調用你的委託(可能是你的viewController,所以你必須用一個數字來標記它們,你可以提取一個行號 - 即cell.textField.tag = indexPath .row + 100)。
所以總結起來,你想這樣的事情在你的viewController
- (void)textFieldDidEndEditing:(UITextField *)textField {
if ([textField.text length] > 0) {
NSUInteger row = textField.tag - 1;
[textFieldValues setObject:textField.text forKey:[NSNumber numberWithInt:row]];
}
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *cellId = @"cellId";
TextFieldTableViewCell *cell = (TextFieldTableViewCell *) [tableView dequeueReusableCellWithIdentifier:cellId];
if (!cell)
cell = [[[TextFieldTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellId] autorelease];
cell.textField.tag = indexPath.row + 1;
cell.textField.delegate = self;
NSString *value = [textFieldValues objectForKey:[NSNumber numberWithInt:indexPath.row]];
if (value)
cell.textField.text = value;
else
cell.textField.text = @"";
return cell;
}
,然後在TextFieldTableViewCell.h
@property (nonatomic, readonly) UITextField *textField;
終於在你的TextFieldTableViewCell.m
@synthesize textField;
ps當編輯textField離開可見單元格區域時,我正在遊蕩可能發生的情況,並且它沒有被重用或釋放......給了我寒戰!所以EndEditing應該是足夠的。
感謝您的回覆。但我的要求是我想在這些文本字段中輸入數據,我需要將數據保存在數據庫或數組中。首先我想存儲在NSMutableArray中。然後我會嘗試使用數據庫。在此先感謝... – Praveen 2011-04-27 13:03:39
@Praveen有解決方案嗎? – Siva 2013-10-24 08:41:15
https://stackoverflow.com/questions/28431086/getting-data-from-each-uitableview-cells-swift 看到這個鏈接 – 2017-10-20 18:14:08