我想按下QTY按钮(红色文本)并将文本(即13)复制到同一行的文本字段中。
-(IBAction)qtyButtonPressed:(id)sender {
UITextField *textField = (UITextField *)[self.view viewWithTag:3];
textField.text = @"13";
这就是我所拥有的。
答案 0 :(得分:1)
如果每个单元格都有一个按钮,首先您需要能够识别单击哪一行的按钮。通常,如果它是一个包含1个部分的表,则可以将行号设置为cellForRowAtIndexPath中的按钮标记值:...当单元格可见时设置
[button setTag:indexPath.row];
然后在按下按钮时调用的选择器中,获取标记值以确定行号,并为该行中的textfield设置文本
int row = [sender tag];
NSIndexPath *indexPath = [NSIndexPath indexPathForRow:row section:0];
id cell = [tableView cellForRowAtIndexPath:indexPath];
[cell.textField setText:....];
要使其工作,您需要子类化UITableViewCell,并使用property / synthesize访问button和textField。
答案 1 :(得分:1)
我知道这已经得到了解答,但我遇到了类似的问题,不幸的是我使用了标签来查找表格视图单元格中的字段,允许我在InterfaceBuilder / Xcode中进行布局,仍然可以避免像这样的子类: / p>
- (UITableViewCell *) tableView: (UITableView *) tableView cellForRowAtIndexPath: (NSIndexPath *) indexPath {
static NSString *AttributeCellIdentifier = @"AttributeCell";
UITableViewCell *cell;
UILabel *label;
UITextField *value;
MyAttribute *a;
switch( indexPath.section ) {
case ATTRIBUTES_SECTION:
cell = [tableView dequeueReusableCellWithIdentifier: AttributeCellIdentifier];
label = (UILabel *) [cell viewWithTag: 1];
value = (UITextField *) [cell viewWithTag: 2];
a = [attributeList objectAtIndex: indexPath.row];
label.text = a.label;
value.text = a.value;
break;
// Other sections...
}
return cell;
}
但这意味着我不能将标签用于文本字段所在的行。因此,作为使用标签的替代方法,我使用文本字段中的坐标来查看它所在的行:
- (void) textFieldDidEndEditing: (UITextField *) textField {
NSLog( @"Entering %s with %@", __func__, textField );
NSIndexPath *textFieldLocation = [self.tableView indexPathForRowAtPoint: [textField convertPoint:textField.bounds.origin toView: self.tableView]];
NSLog( @"- The textfield is in the cell at: %@", textFieldLocation );
if( textFieldLocation.section == ATTRIBUTES_SECTION ) {
MyAttribute *a = [attributeList objectAtIndex: textFieldLocation.row];
a.value = textField.text;
}
}
如果我在单元格中有多个文本字段,我仍然可以使用标记值来知道哪一个正在结束编辑。
构建一个返回任何视图的tableview索引的小帮助方法甚至可能是明智的:
- (NSIndexPath *) indexPathForView: (UIView *) view {
NSIndexPath *loc = [self.tableView indexPathForRowAtPoint: [view convertPoint: view.bounds.origin toView: self.tableView]];
return loc;
}
这可以放在一个类别中,并且可以轻松地用于任何tableview,无需任何编码。
答案 2 :(得分:0)
您可以在带有addTarget:action:forControlEvents:
的按钮上使用UIControlEventTouchUpInside
来注册触摸按钮时将被调用的选择器。然后在该方法中,找到相应的文本字段并分配其text
属性。