20

我试图弄清楚除了动态单元格之外如何拥有一些静态单元格(我认为),但是当我启动一个新的 Master-Detail 应用程序并将默认的动态原型切换为静态单元格时,它会崩溃。

我认为,由于我还是新手,所以我不明白所有组件(表格视图、单元格、委托)是如何连接的。切换到静态单元后,我制作了三个单元,但它们没有出现。该应用程序只是崩溃。

我可以包含代码,但基本上,我创建了一个新的主从细节,切换到静态单元格,更改三个单元格的名称,然后它崩溃了(在主循环中)。

提前感谢一切。

4

1 回答 1

56

如果我理解您的问题,这就是您正在寻找的解释:

原型(可重用性):

当您使用动态单元格时,您使用原型单元格。这意味着无论是在 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)style reuseIdentifier:(NSString *)reuseIdentifier];

静止的:

静态单元的想法很简单。您可以使用原型单元(例如,只有一个原型)并输入一个静态NSArray的,例如,作为数据源。为了承担实现UITableViewDataSource方法的任务,Apple 引入了静态单元,您将只使用情节提要和 IB。在 IB 中,您选择表格视图,然后选择静态单元格,然后输入您的文本,或设置图像。您不希望稍后在应用程序运行时对静态单元格进行任何动态更改,因为这并不意味着您将不得不实现更多不值得的方法。虽然获取所选行的工作量不大indexPath,但想法是如果您需要从选择的静态单元格中推送新视图,您将使用 segues,而不是实现任何代码。

使用静态单元格时,您不应该实现UITableViewDataSource方法,否则您的应用程序会崩溃,反之亦然,如果您UITableViewDataSource在使用原型单元格时不实现方法(必需的),您的应用程序会崩溃。

于 2012-06-10T00:00:06.573 回答