在UITableView中检索单元格

时间:2009-10-01 15:44:47

标签: objective-c iphone cocoa-touch uitableview

我有一个UITableView,一旦单击一个单元格,它就会推送包含自定义单元格的tableViewB。这些单元格包含TextFields。一旦用户进行任何更新,他们点击“保存”,然后弹出tableViewB并转到第一个UITableView。我想在单击Save时从tableViewB获取所有UITextField值。这样做的最佳方法是什么?

问题是我需要循环遍历所有UITableView单元格。我不确定这是怎么做的,或者它是否是一个好方法。只是在这里寻求有关什么是好技术的帮助。

3 个答案:

答案 0 :(得分:3)

您应该知道,一般情况下,屏幕上显示的细胞分配的数量与此相同。不可见的单元格实际上不是持久的,而是仅在调用tableView:cellForRowAtIndexPath:时创建。我建议你创建一个数组来缓存所有文本字段的内容,并且每当用户离开文本字段(例如textField:shouldEndEditing:方法或类似的东西)时,它就会被更新。

答案 1 :(得分:3)

在tableViewB标题中

,声明:

NSMutableArray *stringArray;

并在实施中:

- (id) init {  //whatever your tableViewB initializer looks like
    if ([self = [super init]) {
        //oldData is an NSArray containing the initial values for each text field in order
        stringArray = [[NSMutableArray alloc] initWithArray:oldData];
    }
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    ...
    //Making the cell
    [cell.textfield addTarget:self action:@selector(updateField:) forControlEvents:UIControlEventValueChanged];
    ....

    //Setting up the cell
    cell.textfield.tag = indexPath.row;
    cell.textfield.text = [stringArray objectAtIndex:indexPath.row];
    return cell;
}

- (void) updateField:(UITextField *)source {
    NSString *text = source.text;
    [stringArray replaceObjectAtIndex:source.tag withObject:text];
}

- (void) dealloc {
    [stringArray release];
}

有几种方法可以选择将数据恢复到原始表视图,或者通过委托,或者将stringArray声明为传递给tableViewB初始化程序而不是在那里分配的变量。

答案 2 :(得分:1)

如果我理解你的问题 - 以数字形式识别每个单元格并在数组中引用它们/爬上数组以循环遍历它们