我创建了一个动态表,但是当我尝试访问第一个单元格中文本字段的内容时,我遇到了一个问题。我得到的文本字段总是空的,即使我在调用操作之前输入了一些文本。
这是我的代码。你能帮我找一下它的错误吗?
CustomNameCell.h
@interface CustomNameCell : UITableViewCell
@property (retain, nonatomic) IBOutlet UITextField *nameTextField;
@end
CustomViewController.h
@interface CustomViewController : UITableViewController
@property (retain, nonatomic) IBOutlet UITableView *tableview;
- (IBAction)search:(id)sender;
@end
CustomViewController.m:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
if (indexPath.row == 1) {
static NSString *CellIdentifier = @"nameCell";
CustomNameCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell==nil) {
cell = [[CustomNameCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}
return cell;
}
...
以及单击按钮时的操作,我尝试获取文本字段的内容:
- (IBAction)search:(id)sender {
static NSString *CellIdentifier = @"nameCell";
CustomNameCell *nameCell = [_tableview dequeueReusableCellWithIdentifier:CellIdentifier];
here nameCell.nameTextField.text is always equal to @""
为什么我的文字字段总是空的?
感谢您的帮助;)
答案 0 :(得分:2)
如果你需要一个单元格,你应该这样:
CustomNameCell * cell = (CustomNameCell *)[tableview cellForRowAtIndexPath:indexPath];
NSString * textInField = cell.nameTextField.text;
如果你告诉我你需要什么逻辑我会扩展我的问题。现在 - 您可以使用此方法。
第一个单元格的内容将是:
CustomNameCell * cell = (CustomNameCell *)[tableview cellForRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0]];
NSString * textInField = cell.nameTextField.text;
答案 1 :(得分:0)
您不应在{ - 1}}中调用[_tableview dequeueReusableCellWithIdentifier:CellIdentifier];
,因为它是在创建tableView期间重用单元格的机制。在滚动tableview时,不是创建新单元格,而是重新使用之前创建的一些单元格。
底线:使用(IBAction)search:(id)sender
来访问您区域中特定行的单元格,如果您想要第一个区域的第一个单元格,那么它将是:
cellForRowAtIndexPath
答案 2 :(得分:0)
我就是这样做的。我不知道这是当前的方法。
-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return 1;
}
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return cellContentArray.count;
}
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *cellId=@"cell";
UITableViewCell *cell=[tableView dequeueReusableCellWithIdentifier:cellId forIndexPath:indexPath];
if (cell==nil) {
cell=[[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellId];
}
UITextField *firsttext=[cell viewWithTag:101];
UITextField *second=[cell viewWithTag:102];
[second setTag:(indexPath.row)+1000];
[firsttext setTag:(indexPath.row)+100];
return cell;
}
- (IBAction)buttonPressed:(id)sender
{
for (int i=0; i<cellContentArray.count; i++) {
UITableViewCell * cell = (UITableViewCell *)[baseTableveiew cellForRowAtIndexPath:[NSIndexPath indexPathForRow:i inSection:0]];
UITextField *tempTextField=[cell viewWithTag:i+100];
UITextField *secondTextField=[cell viewWithTag:i+1000];
NSString * textInField = tempTextField.text;
NSLog(@"tempTExtTiedl tag %ld data %@",(long)tempTextField.tag, textInField);
NSLog(@"second tag %ld data %@",(long)secondTextField.tag, secondTextField.text);
}
}