通过实例调用cellForRowAtIndexPath

时间:2011-02-17 20:19:09

标签: iphone uitableview

我想知道以下情况是否可行。 我有一个UITableViewController类,其中包含十行显示一些数据。现在,我想在一个tableview中显示前五行,在另一个tableview中显示最后五行。由于我不想再次获取数据,我希望创建一个原始表类的实例,并调用其cellForRowAtIndexPath:(NSIndexPath*)indexPath来返回表格单元格并将其添加到其他两个表格视图中。是否可以通过实例调用委托方法?如果是这样,我如何创建指向表的任何部分中的特定行的NSIndexPath对象...

4 个答案:

答案 0 :(得分:1)

感谢您的回复。我尝试调用cellForRowAtIndexPath:(NSIndexPath*)indexPath,但它始终显示以下警告

'RootViewController' may not respond to '-cellForRowAtIndexPath:'

此外,应用程序崩溃并显示消息

 ***Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[RootViewController cellForRowAtIndexPath:]: unrecognized selector sent to instance 0x4bad30'

正如Andrei描述的那样初始化了NSIndexPath。 猜猜它不可能调用这个函数。

答案 1 :(得分:0)

如果您不想再次获取,为什么不将获取结果添加到数组?

这样做的好处是填充你的tableview不需要“实时获取” - 在你需要的时候获取数据可能会在某些情况下使得滚动桌面视图变慢或者可能发生口吃。

但是,你也可以尝试将tableviewcells添加到一个或多个数组中,以便在你第一次化妆你的tableview时保持对它们的引用。

答案 2 :(得分:0)

我认为你不需要任何详细说明 让所有表使用相同的数据源。根据该表元素的标记值,选择要在哪个表中显示的项目。当有任何变化时,在所有表上调用reloadData。

答案 3 :(得分:0)

我的猜测是在2个或更多表中使用相同的UITableViewCell是行不通的 如果您正在重复使用单元格,那么这些重复单元格很可能最终会被另一个内容刷新 为了防止这种情况,您需要克隆这些单元格,在这种情况下,在UITableViewCell级别上工作是不可行的。
最好将数据(由单元格显示)存储在一个数组(或其他存储方式)中,并在多个表之间共享该数据。

另外,您还可以在共享相同内容的同时独立自定义这些表的外观。

要回答上一个问题,可以创建一个NSIndexPath以指向任何单元格。 第一个索引是sectio,第二个索引是该部分中的行。 例如,要指向第2部分,单元格5,您可以编写如下内容:

NSIndexPath* myIndexPath = [[NSIndexPath indexPathWithIndex:2] indexPathByAddingIndex:5]; 

//Or, with another method:

NSIndexPath* myIndexPath = [NSIndexPath indexPathWithIndexes:indexes_array length:count];
相关问题