我正在试图找出除动态单元格之外如何使用一些静态单元格(我认为)但是当我启动一个新的Master-Detail应用程序并将默认的动态原型切换到静态单元格时,它会崩溃。“ / p>
我认为,因为我还是新手,所以我不明白所有组件(表视图,单元格,代理)是如何连接的。在我切换到静态细胞后,我制作了三个细胞,但它们没有显示出来。该应用程序崩溃。
我可以包含代码,但基本上,我创建一个新的Master-Detail,切换到Static Cells,更改三个单元格的名称,然后崩溃(在主循环中)。
感谢所有事情。
答案 0 :(得分:50)
如果我理解你的问题,这就是你要找的解释:
原型(可重用性):
使用 动态细胞 时,使用 原型细胞 。这意味着在IB或代码中,您创建UITableViewCell
的实例,并为其指定标识符(reuseIdentifier
)。 UITableView
使用此 原型 生成所需数量的单元格(行)。 UITableView
为填充屏幕所需的单元格创建(并使用内存)。一旦其中一些单元格离开屏幕,UITableView
重新使用 - 回收 。
您可以在UITableView
中定义多个 一个 原型单元格。这个想法是每个原型都有不同的用途。例如,您定义一个只有一个大UILabel
的原型单元格,其目的是使用静态文本。您定义了另一个只有一个UIImageView
的原型。这取决于您的设计以及您希望如何显示数据。
要在IB中使用原型单元格,请使用 动态原型单元格 ,并设置identifier
。然后,您必须实现UITableViewDataSource
方法,例如:
– tableView:numberOfRowsInSection: – tableView:cellForRowAtIndexPath:
这些方法是UITableView的委托方法。
如果不使用IB,您将使用– tableView:cellForRowAtIndexPath:
方法创建单元格:
UITableViewCell * cell = [[UITableViewCell alloc] initWithStyle:(UITableViewCellStyle)样式reuseIdentifier :( NSString *)reuseIdentifier];
<强>静态:强>
静态细胞的想法只是简单。您可以使用原型单元格(例如,只有一个原型)并输入静态NSArray
,例如,作为数据源。为了完成实现UITableViewDataSource
方法的任务,Apple引入了静态单元格,您只能使用故事板和IB。在IB中,您选择表格视图,然后选择 静态单元格 ,然后键入文本或设置图像。
您不希望以后在应用程序运行时对静态单元格进行任何动态更改,因为它并不意味着,您将不得不实现更多不值得的方法。虽然获取所选行的indexPath
并不是很重要,但想法是如果需要从选择静态单元格中推送新视图,则可以使用segues,而不是实现任何代码。
使用静态单元格时,您不应该实现UITableViewDataSource
方法,否则您的应用程序会崩溃,反之亦然,如果您在使用原型单元格时没有实现UITableViewDataSource
方法(必需的方法),那么您的应用程序崩溃。