如何获取自定义单元格并通过 indexpath 使用它的自定义项 - swift3?

Posted

技术标签:

【中文标题】如何获取自定义单元格并通过 indexpath 使用它的自定义项 - swift3?【英文标题】:How to get customized cell and use it's customized item by 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 自定义我的单元格。 您注册了您的自定义单元格吗? 【参考方案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)")

【讨论】:

以上是关于如何获取自定义单元格并通过 indexpath 使用它的自定义项 - swift3?的主要内容,如果未能解决你的问题,请参考以下文章

如何从自定义表格视图单元类中获取对表格视图控制器的引用

如何使用 xib 文件正确创建自定义单元,注册并加载它?

如何使用 plist 中的数据阻止或禁用 Tableview 中的自定义单元格?

C# WPF DataGrid获取单元格并改变背景色

UITableviewcell单元格间距

来自 NIB 的可扩展自定义 UITableViewCell