【问题标题】:Update the header in tableView swift快速更新 tableView 中的标题
【发布时间】:2015-06-11 14:23:03
【问题描述】:

当我添加新行而不重新加载整个部分时,我正在尝试更新在部分标题中创建的 label.text。

目前我找到了一个解决方案,但它需要很多 if 语句。 我发现一个section的header其实也是一行,行数取决于iPhone的cpu架构,如果是32行数是2147483647如果是64bit行数是9223372036854775807。

对于 iPhone 5 我愿意

self.tableView.reloadRowsAtIndexPaths([NSIndexPath(forRow:2147483647, inSection:1)], withRowAnimation: .Fade)

其中 2147483647 是表头的行号,......很酷,对吧?

现在我知道这不是一个好方法,我必须检查手机版本。有没有其他方法可以做到这一点,或者我这样做的方式很好?

【问题讨论】:

  • 为什么不直接使用UITableView的headerViewForSection(_:)tableHeaderView访问header view呢?
  • 那么我如何在它的方法之外访问标题视图内的标签?
  • 通过子类化?更多内容,您可以参考UITableViewHeaderFooterView的文档,您可能会找到答案。

标签: ios iphone uitableview swift


【解决方案1】:

创建UILabel的对象

 var lbl_header = UILabel()


 func tableView(tableView: UITableView, viewForHeaderInSection  section: Int) -> UIView?
  {

    self.lbl_header.frame = CGRectMake(0, 0, 320, 15)
    self.lbl_header.text = "Test"
    self.lbl_header.backgroundColor = UIColor.redColor()
  return self.lbl_header;

  }

现在你想改变 UILabel 的文本 例如。我点击按钮更改标签的文本

  @IBAction func update_lbl_click(sender: UIButton)
   {
     self.lbl_header.text = "Hello"
   }

它会将 lbl_header 的文本更改为 Hello...

【讨论】:

    【解决方案2】:

    您可以设计自己的标题,就像在表格视图中设计自定义单元格一样。或者您可以像这样添加图像:

    func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
    
        var myCustomView: UIImageView
        var myImage: UIImage = UIImage(named: "myImageResource")
        myCustomView.image = myImage
    
        let header: UITableViewHeaderFooterView = view as UITableViewHeaderFooterView
        header.addSubview(myCustomView)
        return header
    }
    

    然后您可以简单地将您的部分标题 UILabel 添加为另一个子视图。

    【讨论】:

      【解决方案3】:

      Swift 3 更新

      var lbl_header = UILabel()
      
      func tableView(tableView: UITableView, viewForHeaderInSection  section: Int) -> UIView?
      {
        self.lbl_header.frame = CGRect(x: 0, y: 0, width: 200, height: 21)
        self.lbl_header.text = "Test"
        self.lbl_header.backgroundColor = UIColor.green
        return self.lbl_header;
      }
      

      现在,可以通过从其他地方访问lbl_header.text 来更改它。

      【讨论】:

        猜你喜欢
        • 2021-10-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-12-18
        • 2015-10-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多