在uitableview中返回的单元格数

时间:2013-02-26 13:03:27

标签: iphone ios uitableview

如果我们在numberOfRowsInSection中返回100,如

-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
     return 100;
 }

然后在cellForRowAtIndexPath方法中一次创建多少个单元格?

6 个答案:

答案 0 :(得分:1)

如果你问的是调用-tableView:cellForRowAtIndexPath:方法的次数,答案就是调用它,因为目前可以看到很多单元格。滚动时,将为每个即将显示的新单元调用它。它如何知道现在有多少细胞可见?为每个单元调用-tableView:heightForRowAtIndexPath:来计算表视图的contentSize。

答案 1 :(得分:1)

实际上它不会分配所有100个单元格。而只是那些目前可见的。当我们使用[tableView dequeueReusableCellWithIdentifier:cellIdentifier];时,单元格被重用于内存处理。

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section

只返回单元格总数。

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

每次滚动表格视图时都会调用此方法。

答案 2 :(得分:0)

这取决于您的细胞类型。如果设置了dequeueReusableCellWithIdentifier,那么它只会初始化您在屏幕上看到的内容,当您滚动它时,它将向下滚动到您在上述方法中设置的行数。

答案 3 :(得分:0)

它将分配所有100个Cells,但一次仅显示Cells,将根据

修复
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath

Cell的高度和UITableView Frame

的宽度

答案 4 :(得分:0)

单元格的数量以UITableView高度返回。表示它第一次返回单元格显示的数量。 tableView:cellForRowAtIndexPath方法只调用可见单元格,而不调用UITableView的不可见单元格。如果你滚动,那么tableView:cellForRowAtIndexPath重新使用先前不可见的单元格而不是新的单元格。

答案 5 :(得分:0)

同意@pbibergal,如果你使用了dequeueReusableCellWithIdentifier,并且在一次创建大约九(9)个单元格的情况下放置如下所示的条件(单元格的数量取决于tableview高度)。否则系统一次创建100个单元格。

TableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell==nil) {
        cell = [[MainCustomCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
    }

如果您使用上面的代码,那么在一次创建的时间限制的单元格(9个单元格),一次创建其他明智的100个单元格,并且它在内存中受到影响。