是否可以在for / in循环中创建UITableViewCells?

时间:2014-08-14 16:16:59

标签: ios objective-c uitableview

我正在调用一个函数,我在其中检索需要在tableviewCells中显示的数据的NSDictionary。是否可以调用方法

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

另一种方法?

2 个答案:

答案 0 :(得分:1)

无法在另一个方法中调用该特定方法。但是,您可以在任何方法中调用[self.tableView reloadData]。这将调用包含- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

的所有UITableView委托方法

答案 1 :(得分:0)

您可以显式调用UITableViewDataSourceUITableViewDelegate的任何方法,但只应在需要时才能执行。在我的一个项目中,我得到了特定的(子类)单元格,它们在drawRect:方法中绘制元素而不是,但在我定义的drawCell方法中,以获得性能提升(防止屏幕外渲染等。)

除非你的单元格有特殊的绘图需求,(调整子视图等),你应该让cellForRowAtIndexPath:方法为你工作。

但是,如果你想明确获取细胞,你可以这样做:

[yourTableView cellForRowAtIndexPath:indexPath];

这会让你的细胞回归。请注意,它将执行cellForRowAtIndexPath:内的所有相关代码,包括出列,创建以及您在其中进行的任何其他调用。

传递此处的{p> indexPathNSIndexPath类型的对象,您可以创建一个这样的对象:

NSIndexPath* indexPath = [NSIndexPath indexPathForRow:ROW_NUM inSection:SECTION_NUM];

其中,ROW_NUM是该部分内的行号,即SECTION_NUM。对于第三部分中的第一个单元格,indexPath为:

NSIndexPath* indexPath = [NSIndexPath indexPathForRow:0 inSection:2];//Since indices start at 0