如果我们在numberOfRowsInSection中返回100,如
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
return 100;
}
然后在cellForRowAtIndexPath
方法中一次创建多少个单元格?
答案 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个单元格,并且它在内存中受到影响。