关于静态细胞与动态细胞的混淆

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

我想,既然我还是新手,我不明白所有组件(表视图,单元格,代理)是如何连接的。 在我切换到静态细胞后,我制作了三个细胞,但它们没有显示出来。 该应用程序崩溃了。

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

谢谢你的一切。

如果我理解你的问题,这就是你要找的解释:

原型(可重用性):

使用动态单元格时 ,使用原型单元格 。 这意味着无论是在IB中还是在您的代码中,您UITableViewCell创建一个UITableViewCell实例,并为其指定一个标识符( reuseIdentifier )。 UITableView使用此原型生成所需数量的单元格(行)。 UITableView为填充屏幕所需的单元创建(并使用内存)。 一旦这些单元格中的一些离开屏幕, UITableView 重复使用它们 – 它们循环 使用

您可以在UITableView定义多个原型单元。 我们的想法是每个原型都有不同的用途。 例如,您定义一个只有一个大UILabel的原型单元格,其目的是使用静态文本。 您定义了另一个只有一个UIImageView原型。 这取决于您的设计以及您希望如何显示数据。

要在IB中使用原型单元,请使用Dynamic Prototypes单元格 ,并设置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方法(必需的方法),则应用程序崩溃。