如何在tableview函数之外获取单元格?

时间:2017-11-28 08:39:04

标签: uitableview swift3

我想在函数内部获取单元格(在tableview函数之外)。尝试这样,但当它改为第1行时,它就崩溃了。

到目前为止,这是我的代码:

func ValueChecker(cell: UITableViewCell){
    let subCellInt = Int(CustomUserDefaults.shared.getSubCellRow())!
    let cell = self.tableView.cellForRow(at: IndexPath(row: 0, section: 0)) as! BankPaymentDetailsCell
    let mainMenuValue = CustomUserDefaults.shared.getSubCell()
    if(mainMenuValue=="00" || mainMenuValue=="01" || mainMenuValue=="02" || mainMenuValue=="03" || mainMenuValue=="04" || mainMenuValue=="05" || mainMenuValue=="06"){
        selectedRow = -1
        cell.ivExpand.transform = CGAffineTransform(rotationAngle: (180.0 * CGFloat.pi) * 180.0)
    }else{
        cell.ivExpand.transform = CGAffineTransform(rotationAngle: (180.0 * CGFloat.pi) / 180.0)
    }
    tableView.beginUpdates()
    tableView.endUpdates()
}

subCellInt是我在本地保存的indexpath.row。

如果我改为:

let cell = self.tableView.cellForRow(at: IndexPath(row: subCellInt, section: 0)) as! BankPaymentDetailsCell

它仅适用于第0个单元格(第一个单元格),但如果单元格编号为1和2(单元格数为3)则会崩溃。

如何在tableview函数之外获取单元格?

更新: 我使用此代码从tableview外部函数访问tableview单元格:

func ValueChecker(cell: UITableViewCell){
    let subCellInt = Int(CustomUserDefaults.shared.getSubCellRow())!
    let cell : BankPaymentDetailsCell = tableView.dequeueReusableCell(withIdentifier: "BankPaymentDetailsCell") as! BankPaymentDetailsCell
    let mainMenuValue = CustomUserDefaults.shared.getSubCell()
    if(mainMenuValue=="00" || mainMenuValue=="01" || mainMenuValue=="02" || mainMenuValue=="03" || mainMenuValue=="04" || mainMenuValue=="05" || mainMenuValue=="06"){
        selectedRow = -1
        cell.ivExpand.transform = CGAffineTransform(rotationAngle: (180.0 * CGFloat.pi) * 180.0)
    }else{
        cell.ivExpand.transform = CGAffineTransform(rotationAngle: (180.0 * CGFloat.pi) / 180.0)
    }
    tableView.beginUpdates()
    tableView.endUpdates()
}

到目前为止,它的确有效。它可以从外部tableview函数访问单元格,它不再崩溃。

2 个答案:

答案 0 :(得分:0)

只有当表视图足够大以便加载时,才能访问表视图单元格。

答案 1 :(得分:0)

您无法从外部访问tableview的任何随机单元格。 但是有一种方法可以实现这一目标。 你可以用
   让visibleCells = yourTableView.visibleCells 通过这种方法,你可以获得一系列可见细胞,你可以做任何你想做的事情