在UITableViewController的Interface Builder中,我指定了原型单元格的数量并对其进行了配置。在代码中,相应地设置了numberOsSectionsInTableView:
和tableView:numberOfRowsInSection:
。在这种情况下,5个细胞。
在模拟器中以某种方式显示更多(空)原型单元格。
有意思的是,我有另一个项目,我做了同样的事情,但是显示了正确数量的原型单元格。
如何解决这个问题,只显示原始细胞的所需数量?j
答案 0 :(得分:2)
我意识到这已经得到了回答,但我觉得最终要解释这里发生了什么,而不是咆哮出一些代码。
首先,原型细胞没有关于将要显示多少细胞的障碍。当您设置静态单元格的数量时,这将显示多少个静态单元格,动态单元格是空白单元格。您可以使用这些来创建1个动态单元格,其中包含图像的占位符和一段文本的占位符。然后你告诉tableview你想要多少行,你可以通过调用这行来获得对可重用单元的引用:
[tblView dequeueReusableCellWithIdentifier:@" <id> "];
然后,您将在返回的单元格上适当地设置图像和文本。
你正在做的是创造X&#34;空白石板&#34;使用默认值而不是覆盖这些值。我提到的方式是出于性能原因和内存使用原因而设计的。我有效提到的方式是在内存中重复使用1个类实例,而你的内存中有X个实例都使用了一次。
其次,您看到空白行的原因是,在不使用分组样式的tableview中,tableView将显示尽可能多的行,并且在您给定的边界内。无论你告诉它显示多少。
此代码的原因:
self.tableView.tableFooterView = [[UIView alloc] init];
删除空行是因为页脚将在包含内容的最后一行之后添加,而tableView将不会显示任何行,空白或此后的其他行。
希望这有帮助。
答案 1 :(得分:1)
在viewDidLoad
:
- (void)viewDidLoad
{
[super viewDidLoad];
*// self.tableView.tableFooterView = [[[UIView alloc] init] autorelease];*
*//Since memory management is controlled by ARC now, so ignore autorelease*
self.tableView.tableFooterView = [[UIView alloc] init] ;
}
希望这有帮助!