IB UITableView未定义原型单元格显示?

时间:2014-01-15 10:01:44

标签: objective-c uitableview interface-builder

在UITableViewController的Interface Builder中,我指定了原型单元格的数量并对其进行了配置。在代码中,相应地设置了numberOsSectionsInTableView:tableView:numberOfRowsInSection:。在这种情况下,5个细胞。

在模拟器中以某种方式显示更多(空)原型单元格。

enter image description here

有意思的是,我有另一个项目,我做了同样的事情,但是显示了正确数量的原型单元格。

enter image description here

如何解决这个问题,只显示原始细胞的所需数量?j

2 个答案:

答案 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] ;
}

希望这有帮助!