Swift 4 - 将新行从数组插入到只有一个静态行的部分
Posted
技术标签:
【中文标题】Swift 4 - 将新行从数组插入到只有一个静态行的部分【英文标题】:Swift 4 - Insert a new rows from array to section with only one static row 【发布时间】:2018-05-18 08:00:32 【问题描述】:我的 tableView 在开始时有 n 部分。每个部分只有一行,但每一行都包含从数组中添加到部分行的按钮。
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int
let postModel = self.postsArray[section];
if (self.currentSection == section)
return 1 + (postModel.comments?.count)!;
else
print("nie rozszerzone")
return 1;
func numberOfSections(in tableView: UITableView) -> Int
return self.postsArray.count;
我试图这样做
func showComments(model: MGPostModel, sender: MGCommunityPostTableViewCell)
guard let path = self.communityTableView.indexPath(for: sender) else
return;
print(path)
print(model.comments?.count as Any)
self.currentSection = path.section;
//model.comments.count is equal 3
let indexPath = IndexPath(row: (model.comments?.count)!, section: path.section);
print(indexPath)
self.communityTableView.beginUpdates();
self.communityTableView.insertRows(at: [indexPath], with: .automatic);
self.communityTableView.endUpdates();
//self.communityTableView.reloadRows(at: [indexPath], with: .automatic);
但响应是“无效更新:第 0 节中的行数无效。更新后现有节中包含的行数 (4) 必须等于更新前该节中包含的行数 ( 1), 加上或减去从该节插入或删除的行数(1 插入,0 删除)..."
我知道 numberOfRows 需要 4 行,但为什么 insertRows 在应该插入 3 行时尝试只插入一个?
【问题讨论】:
【参考方案1】:第 1 步:- 您必须更新 tableview 方法中使用的行数数据。前-> myarray.count postModel.cmets?.count --> 在插入一行之前更新它。
第 2 步:- 更新行数数据后,您可以进行更新、添加或删除行或重新加载表格视图。
注意:在您的代码中,没有任何数据更新用于声明 tableview 中的行数。
【讨论】:
【参考方案2】:您必须在修改表操作(删除、插入、移动)之前更新您的日期源
在这一行之前
let indexPath = IndexPath(row: (model.comments?.count)!, section: path.section);
写这个,插入新元素
model.comment.append(newelement)
【讨论】:
【参考方案3】:@Abdelahad Darwish,@Rakesh Patelyes,我知道,但是。
索引为 0 的行是 postModel,其中包含名为 comment 的数组。我不想将 postModel 添加到评论数组中。
应该是这样的:
第 0 节:
第 0 行 - 后模型 第 1 行 - 评论[0] 第 n 行 = 评论 [n]因此,如果我向 postModel.comment 添加一些内容,它将破坏此层次结构。
【讨论】:
以上是关于Swift 4 - 将新行从数组插入到只有一个静态行的部分的主要内容,如果未能解决你的问题,请参考以下文章