如何通过单击UITableView的上一个单元格来解锁下一个单元格?

时间:2018-08-12 17:32:54

标签: ios swift uitableview

问题:如何阻止对cell(№2,3,4,5 ...)的输入?以及如何使它在单击№1cell时打开№2cellenter image description here

2 个答案:

答案 0 :(得分:1)

具有一个带有未锁定行索引的数组。

var unlockedRows: [Int] = [1]

现在,您可以在didSelectRowAt委托中检查该行是否已解锁。

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    if unlockedRows.contains(indexPath.row) {
        let nextIndex = indexPath.row + 1
        if nextIndex < numberOfRows { //Use your variable that gives total number of rows here instead of numberOfRows
            unlockedRows.append(indexPath.row + 1)
            // Do other stuff like removing the locked icon of the next cell
        }
        return true
    }
    // Display row locked message?
    return false
}

答案 1 :(得分:1)

首先,您需要一个单位来定义谁被解锁。 然后,当您单击时,向此标志添加1即可解锁下一个单元格。

private var unlocked: Int = 0

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
   if(unlocked == indexPath.row) {
       self.unlocked += 1;
       tableView.reloadData()
   }
}

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

    let cell:MyCustomCell = self.tableView.dequeueReusableCell(withIdentifier: cellReuseIdentifier) as! MyCustomCell

    cell.myCellLabel.text = "\(indexPath.row + 1)"
    if(indexPath.row > self.unlocked) {
     // put the locker
    }
    return cell
}