【问题标题】:How to get customized cell and use it's customized item by indexpath - swift3?如何获取自定义单元格并通过 indexpath 使用它的自定义项 - swift3?
【发布时间】:2018-03-22 09:19:10
【问题描述】:

我有一个问题要获取我的自定义单元格。
我使用我的自定义单元格项目会出错。
我怎么了?

let insertIndexPath = IndexPath(row: self.contents.count-1, section: 0)

   var cell = self.tableView.cellForRow(at: insertIndexPath)

        if cell is MyTextTableViewCell {

        cell = MyTextTableViewCell() as MyTextTableViewCell
        cell.checkImageView.isHidden = true //error here
        cell.warningButton.isHidden = true //error here

      }else if cell is MyImageTableViewCell {

          cell = MyImageTableViewCell() as MyImageTableViewCell
          cell.checkImageView.isHidden = true //error here
          cell.warningButton.isHidden = true //error here
      }

这样的错误:

'UITableViewCell?' 类型的值没有成员'checkImageView'

【问题讨论】:

  • 您要在哪里“自定义”您的单元格?
  • 我使用 xib 自定义我的单元格。
  • 您注册了您的自定义单元格吗?

标签: ios swift uitableview tableview


【解决方案1】:

您正在使用自定义单元类来确保单元实例是否属于该特定类。

实际上您需要使用if-let 块创建自定义单元类的实例。

试试这个看看:

let insertIndexPath = IndexPath(row: self.contents.count-1, section: 0)

if let cell = self.tableView.cellForRow(at: insertIndexPath) as? MyTextTableViewCell {
    cell.checkImageView.isHidden = true 
    cell.warningButton.isHidden = true 

} else if let cell = self.tableView.cellForRow(at: insertIndexPath) as? MyImageTableViewCell {

    cell.checkImageView.isHidden = true 
    cell.warningButton.isHidden = true 
} else if let cell = self.tableView.cellForRow(at: insertIndexPath) {

    print("cell description -- \(cell.description)")
}

【讨论】:

    【解决方案2】:

    这样做:

    let index = IndexPath(row: self.contents.count-1, section: 0)
    
    if let cell = self.tableView.cellForRow(at: index) as? MyTextTableViewCell {
        cell.checkImageView.isHidden = true
        cell.warningButton.isHidden = true
    
    } else if let cell = self.tableView.cellForRow(at: insertIndexPath) as? MyImageTableViewCell {
    
    cell.checkImageView.isHidden = true
    cell.warningButton.isHidden = true
    } else if let cell = self.tableView.cellForRow(at: insertIndexPath) {
    
    print("cell is not from required one -- \(cell.description)")
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-28
      • 2018-12-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-03
      相关资源
      最近更新 更多