为啥当我单击目标 c 中的按钮时未从 tableViewCell 获取文本字段数据?
Posted
技术标签:
【中文标题】为啥当我单击目标 c 中的按钮时未从 tableViewCell 获取文本字段数据?【英文标题】:Why textfield data not fetched from tableViewCell when i click button in objective c?为什么当我单击目标 c 中的按钮时未从 tableViewCell 获取文本字段数据? 【发布时间】:2017-02-23 14:34:12 【问题描述】:如果我点击按钮 NSLog 显示 NULL 值,它没有从文本字段中获取数据,为什么?........
委托方法正常工作......
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
UITableViewCell *cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:@"cellID"];
if (indexPath.row == 0)
self.nameTextField = [[UITextField alloc]init];
self.nameTextField.frame =CGRectMake(25, 0, 300, 50);
self.nameTextField.placeholder = @"Name";
self.nameTextField.keyboardType = UIKeyboardTypeAlphabet;
[cell addSubview:self.nameTextField];
self.nameTextField.delegate = self;
return cell;
if (indexPath.row == 1)
self.button = [UIButton buttonWithType:UIButtonTypeSystem];
self.button.frame = CGRectMake(100, 10, 135, 50);
[self.button setTitle:@"StoreData" forState:UIControlStateNormal];
[self.button addTarget:self action:@selector(buttonClicked:) forControlEvents:UIControlEventTouchUpInside];
[cell addSubview:self.button];
return cell;
return nil;
-(void)buttonClicked:(id) sender
if (sender == self.phoneTextField)
self.nameString = self.nameTextField.text;
NSLog(@"Name : %@", self.nameString);
【问题讨论】:
按钮点击时是否进入 if 语句? 是的,它正在打印 OutPut: Name : (null) 这里的 sender 是按钮,所以它永远不会进入条件 sender = self.button 你在哪里声明phoneTextField
?看起来代码永远不会到达 if 内部(在buttonClicked:
中)。另请注意,您总是在初始化新单元格(以及初始化和重新分配 self.nameTextField
和 self.button
),即使您只是滚动表格(cellForRowAtIndexPath:
可以 - 通常是 - 调用多次)。
为什么 sender=self.phoneTextField 里面怎么回事??有标签值吗?如果是,sender.tag 在哪里??
【参考方案1】:
action function
中的parameter
是按钮而不是textField
-(void)buttonClicked:(id) sender
if (sender == self.button)
self.nameString = self.nameTextField.text;
NSLog(@"Name : %@", self.nameString);
【讨论】:
是的,它正在工作......但它打印的输出:名称:外部名称: 它没有打印数据 为什么打印空输出? 因为 self.nameTextField.text 是空字符串if (indexPath.row == 0) self.nameTextField = [[UITextField alloc]init]; self.nameTextField.frame =CGRectMake(25, 0, 300, 50); self.nameTextField.placeholder = @"Name"; self.nameTextField.keyboardType = UIKeyboardTypeAlphabet; [cell addSubview:self.nameTextField]; self.nameTextField.delegate = self; return cell;
你没有在这里设置 self.nameTextField.text 你只是设置占位符以上是关于为啥当我单击目标 c 中的按钮时未从 tableViewCell 获取文本字段数据?的主要内容,如果未能解决你的问题,请参考以下文章
当我单击目标 C 中的一个按钮(添加按钮)时,如何创建一组按钮?