在包含一组视图的 TableView 中添加 NSMutableArray

Posted

技术标签:

【中文标题】在包含一组视图的 TableView 中添加 NSMutableArray【英文标题】:Add NSMutableArray in TableView Which contains set of Views 【发布时间】:2010-12-30 14:15:22 【问题描述】:

这是我想要做的,我设置了一个图像和 3 个标签的视图,每个都是相同的。

[viewarray addObject:xView]; //view array is NSMutable Array and I am adding 5-6 views
[tblView insertRowsAtIndexPaths:viewarray withRowAnimation:UITableViewRowAnimationFade];

这段代码没有给出任何错误,但也没有在表中添加任何内容。

我做错了什么,如果可能的话,请给我代码 sn-p 以创建 Custom UIViewOne UIImageView+ 3 个标签左侧图像和右侧 3 个标签

【问题讨论】:

【参考方案1】:

UITableView 不使用 UIViews 作为单元格。它实际上使用了 UITableViewCell。 insertRowsAtIndexPaths:withRowAnimations: 方法需要一个 NSArray 的 NSIndexPath。

UITableView 中的每个 UITableViewCell 对应一个 NSIndexPath。 NSIndexPath 保存 UITableView 中特定 UITableViewCell 的顺序和节号。

例如: NSIndexPath *indexPath = [NSIndexPath indexPathForRow:0 inSection:1]; 这将为第 1 部分的第 0 行(第一个单元格)创建一个 NSIndexPath。

创建 NSIndexPath 后,您可以使用 insertRowsAtIndexPaths:withRowAnimations:

[tableView insertRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];

这将使 UITableView 调用 cellForRowAtIndexPath: 以使用您放入 NSIndexPath 中的信息创建一个新单元格。

您可以在此处获取有关 UITableViewCell 的更多信息:

https://developer.apple.com/library/ios/documentation/UIKit/Reference/UITableViewCell_Class/Reference/Reference.html#//apple_ref/occ/cl/UITableViewCell

或者您可以在此处查看表格视图编程指南:

https://developer.apple.com/library/ios/documentation/UserExperience/Conceptual/TableView_iPhone/AboutTableViewsiPhone/AboutTableViewsiPhone.html#//apple_ref/doc/uid/TP40007451-CH1-SW1

【讨论】:

【参考方案2】:

你需要查看 UITableView 和 UITableViewCell 信息。

表格视图使用 UITableViewCell 对象来显示单元格。

insertRowsAtIndexPaths 方法只是通知 UITableView 需要添加一些单元格。

是tableView:cellForRowAtIndexPath:方法(UITableViewDataSource协议的),用于设置表格的单元格。

【讨论】:

【参考方案3】:

insertRowsAtIndexPaths:withRowAnimations: 实际上期望第一个参数是索引路径数组,而不是视图。

所以正确的用法应该是这样的:

[tblView insertRowsAtIndexPaths:@[[NSIndexPath indexPathForRow:3 inSection:4]] withRowAnimations:UITableViewRowAnimationAutomatic];

在这种情况下,表格视图将通过调用- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath自动要求其数据源为这些索引路径提供实际的单元格视图

【讨论】:

以上是关于在包含一组视图的 TableView 中添加 NSMutableArray的主要内容,如果未能解决你的问题,请参考以下文章

如何删除最后一行并在表格视图中添加更多行?

将 UISearchBar 作为子视图添加到 tableView 标题中

如何在 Tableview 单元格中获取 UIButton 的位置,并在 Swift 中添加目标?

何时将子视图从情节提要添加到超级视图?

在 Tableview 中使用 BezierPath 创建时间线视图

从 Tableview 的第 0 部分中删除按钮