如果是手动调用,UITableView cellForRowAtIndexPath会多次调用?

时间:2012-08-08 17:53:58

标签: ios5 uitableview

如果我将UITableView作为UIViewController的属性,并且我使用[tableView cellForRowAtIndexPath:indexPath]手动访问特定行的单元格。

在一个方法调用时,我是否应该看到多次调用:

- (UITableViewCell *)tableView:(UITableView *)aTableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

我的每个UITableViewCell都有一个UITextField,我正在尝试访问它的文本数据。

这就是我正在做的事情:

for (int section = 0; ix < countOfSections; ++section)
{
    NSInteger countOfRowsInSection = // attained
    for (int row = 0; row < countOfRowsInSection; ++row)
    {
        NSIndexPath *indexPath = [NSIndexPath indexPathForRow:row inSection:section];

        // the follow call seems to elicit multiple invocations 
        // on my table delegate's
        // - (UITableViewCell *)tableView:(UITableView *)aTableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

        UITableViewCell *cell = [self.tableview cellForRowAtIndexPath:indexPath];

        // Access some custom data
    }
}

是否有更好的方法来访问UITextField中存储的所有数据,每个UITableViewCell都适用于所有部分和行?

1 个答案:

答案 0 :(得分:1)

您真的不应该尝试使用视图进行数据存储。无论您使用什么作为表的数据源,都应该有一个对象的数组(或其他结构),其中包含在调用tableView:cellForRowAtIndexPath:时为单元格提供内容的数据。

如果您需要对该信息的其他访问权限,您应该直接从数据结构而不是显示器获取它。