我试图弄清楚除了动态单元格之外如何拥有一些静态单元格(我认为),但是当我启动一个新的 Master-Detail 应用程序并将默认的动态原型切换为静态单元格时,它会崩溃。
我认为,由于我还是新手,所以我不明白所有组件(表格视图、单元格、委托)是如何连接的。切换到静态单元后,我制作了三个单元,但它们没有出现。该应用程序只是崩溃。
我可以包含代码,但基本上,我创建了一个新的主从细节,切换到静态单元格,更改三个单元格的名称,然后它崩溃了(在主循环中)。
提前感谢一切。
我试图弄清楚除了动态单元格之外如何拥有一些静态单元格(我认为),但是当我启动一个新的 Master-Detail 应用程序并将默认的动态原型切换为静态单元格时,它会崩溃。
我认为,由于我还是新手,所以我不明白所有组件(表格视图、单元格、委托)是如何连接的。切换到静态单元后,我制作了三个单元,但它们没有出现。该应用程序只是崩溃。
我可以包含代码,但基本上,我创建了一个新的主从细节,切换到静态单元格,更改三个单元格的名称,然后它崩溃了(在主循环中)。
提前感谢一切。
如果我理解您的问题,这就是您正在寻找的解释:
原型(可重用性):
当您使用动态单元格时,您使用原型单元格。这意味着无论是在 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
在使用原型单元格时不实现方法(必需的),您的应用程序会崩溃。