我开始我的ios开发并开始我认为制作一个测量转换器会很有趣。
我设法用故事板创建带有segues的表格视图,带有文本字段的自定义单元格以及与不同尺寸相对应的标签,但现在我卡住了,无法在教程或书中找到答案。
在每个单元格中,存在对应于给定尺寸的文本字段(即,米,厘米等)。如何获取给定行中的文本字段已完成编辑的事件,并在计算后更改其他文本字段? (单元格是从包含计算所需的尺寸名称和值的数组创建的)
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
UILabel *label;
UITextField *field;
static NSString *CellIdentifier = @"DimensionCell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
label = (UILabel *)[cell viewWithTag:1];
field = (UITextField *)[cell viewWithTag:2];
field.delegate = self;
NSString *DimensionLabel = [self.dimension objectAtIndex:indexPath.row];
label.text = DimensionLabel;
return cell;
}
答案 0 :(得分:3)
您需要将UITextField的委托设置为呈现tableView的viewController。
您可以给每个textField标记,也可以检查textFieldDidEndEditing:
委托中textField的点,以找到用于标识textField的indexPath。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
CustomCell *cell = [tableView dequeueReusableCellWithIdentifier:kCellIdentifier
forIndexPath:indexPath];
cell.customTextField.delegate = self;
//You can use tag if there is only one section
//If there is more than one section then this will be ambiguos
cell.customTextField.tag = indexPath.row;
//Set other values
return cell;
}
- (void)textFieldDidEndEditing:(UITextField *)textField{
CGPoint textFieldOrigin = [textField convertPoint:textField.frame.origin toView:self.tableView];
NSIndexPath *indexPath = [self.tableView indexPathForRowAtPoint:textFieldOrigin];
//Now you can use indexPath for updating your dataSource
}
答案 1 :(得分:0)
您可以使用UITextField的restorationId
属性。为每个文本字段提供restoreID,如下所示:
textField.restorationID = @"dimension1";
textField.delegate = self;
然后在下面的textfield委托方法中,您可以检查restoreID以识别编辑了哪个textField。
- (void)textFieldDidEndEditing:(UITextField *)textField
{
if([textField.restorationID isEqualToString:@"dimension1"])
{
// perform calculation and any updation required.
}
}
我建议您将维度名称用作restoreID。这可以帮助您在委托方法中识别文本字段。