UITableview Scroll擦除UITableviewcell内文本字段中的数据

时间:2011-04-27 17:16:07

标签: ios uitableview scroll

我在tableview单元格中有一个带UITextfield的UITableViewController。如果我滚动表格视图,用户在文本字段中输入的数据将消失。我试图将文本字段数据添加到NSMutableArray但它仍然无法正常工作。请帮忙。

1 个答案:

答案 0 :(得分:4)

当调用cellForRowAtIndexPath:时,您返回的单元格必须完全填入您想要显示的数据。因此,如果单元格包含UITextfield,则需要将其text属性设置为数据中该行的正确值。

当表格单元格从屏幕的顶部或底部消失时,UITableViewCell本身可以重复使用。 (滚动时,单元格会消失,新单元格会出现,但UITableView类会重新使用UITableViewCell对象。)在cellForRowAtIndexPath:中,当您使用缓存单元格时,必须确保设置所有内容希望它显示有问题的行,否则你可能会在表中看到一些奇怪的行为。

这有帮助吗?

编辑:

以下是cellForRowAtIndexPath:中使用的典型模式的示例。请注意dequeueReusableCellWithIdentifier:的使用。该方法返回先前分配但未使用的UITableViewCell(如果有)。进一步注意,如果没有返回缓存的单元格,代码会创建一个新的单元格并进行设置(使用与可能是行特定的任何内容无关的内容)。接下来,您可以根据需要为相关行设置单元格。

- (UITableViewCell *)tableView:(UITableView *)tableView 
    cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *SearchResultsCellIdentifier = @"SearchResultsCellIdentifer";

    UITableViewCell *cell = [tableView 
                dequeueReusableCellWithIdentifier:SearchResultsCellIdentifier];
    if (cell == nil)
    {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle
                       reuseIdentifier:SearchResultsCellIdentifier] autorelease];
        cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
    }

    // Your row-specific setup of the cell here
    // ...

    return cell;
}

检查文档以了解有关这些方法的详细信息。 Apple和其他地方有很多关于如何实现tableViews的例子。