如何添加“加载更多”单元格,按下该单元格时会向表格视图添加更多行?

Posted

技术标签:

【中文标题】如何添加“加载更多”单元格,按下该单元格时会向表格视图添加更多行?【英文标题】:How to add a "Load More" cell that when pressed adds more rows to the tableview? 【发布时间】:2017-02-27 22:42:44 【问题描述】:

我正在尝试创建一个表格视图,最初仅显示 5 个单元格和一个“加载更多”单元格,当按下时会显示更多单元格。我正在下载 JSON 数据并将其拆分为 3 个数组,一个用于总数据,一个用于仅前 5 个单元格的数据,一个用于从总数据中减去前 5 个单元格的数据后的剩余数据。

我在这里看到了这个问题:Load More Cells 并尝试实施他们所做的,但收效甚微。这就是我们目前所拥有的 -

非常简单、直接的故事板有 2 个不同的单元格,第一个是包含 JSON 数据的“测试单元格”,第二个是“扩展单元格”,按下时应该显示其余单元格。到目前为止,这是我的代码,我省略了很多以保持这篇文章的简短,我目前收到一个错误标记:

  var castArray: [CastData?]? = []
  var first5CastArray: [CastData?]? = []
  var remainderCastArray: [CastData?]? = []

override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int 

    if let firstArray = first5CastArray 
      return firstArray.count + 1
     else 
      return 0
    
     

  override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell 

    if indexPath.row < (first5CastArray?.count)! 
      let testCell = tableView.dequeueReusableCell(withIdentifier: "testCell", for: indexPath) as! TestCell

      testCell.castImageView.image = first5CastImageArray?[indexPath.row]
      return testCell

     else 
      let expandCell = tableView.dequeueReusableCell(withIdentifier: "expandCell", for: indexPath) as! ExpandCell
      expandCell.moreLabel.text = "More"//Error here -fatal error: unexpectedly found nil while unwrapping an Optional value
      return expandCell
    
  

//Below code never tested because of fatal error from cellForRowAt indexPath!!!!!
      override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) 

    if let remainderArray = remainderCastArray 

      for info in remainderArray 
        first5CastArray?.append(info)
      
    
expandCell.isHidden = true
       tableview.reload 
      

我不完全确定我是否以正确的方式进行,感谢任何帮助!

【问题讨论】:

您确定您的 moreLabel 出口正确地从您的故事板链接到您的 expandCell 类? 是的,我刚刚检查过 检查你的单元格@SwiftyJD的标识符 单元格标识符正确,仍为nil 使用 if let in 从 UITableView 初始化单元格,看看是不是 tableView dequeue 的问题或问题与 UILabel 本身有关,使用if let expandCell = tableView.dequeueReusableCell(withIdentifier: "expandCell", for: indexPath) as? ExpandCell 【参考方案1】:

返回您的故事板,再次选择该单元格,转到“属性检查器”选项卡,在 identifier 字段中输入 expandCell

【讨论】:

以上是关于如何添加“加载更多”单元格,按下该单元格时会向表格视图添加更多行?的主要内容,如果未能解决你的问题,请参考以下文章

限制tableView中显示的单元格数量,滚动到最后一个单元格时加载更多单元格

按下表格单元格时将视图加载到导航视图控制器中

使用 insertRowsAtIndexPaths 时的表视图单元格索引

当在 UITableView(在另一个笔尖/视图上)上按下单元格时,如何导航到笔尖(视图)?

仅当在表格视图中选择单元格时,详细信息披露才会做出反应

显示最后一个单元格时添加表格单元格。在ios中