uiTableView select 前 select 行?

uiTableView select the previous selected row?

我对 didDeselectRowAtIndexPath 委托函数有疑问。 当我第一次 select 时,didDeselectRowAtIndexPath 没有被调用。

但是当我 select 另一个单元格时,调用 didDeselectRowAtIndexPath 但具有前一个 selection 的索引路径。

举个例子:

  1. 我已经 select 编辑了索引 5 处的行。所以什么都不会发生。
  2. 我在索引 12 处 selected 行,然后 didDeselectRowAtIndexPath 将被调用 indexPath.row = 5.

我不明白为什么会这样,这是我的代码:谢谢

class testUICollectionView: UIViewController ,UITableViewDelegate,UITableViewDataSource {

    let tableItems :NSMutableArray = ["Item 1", "Item 2", "Item 3", "Item 4", "Item 5",
        "Item 6", "Item 7", "Item 8", "Item 9", "Item 10", "Item 11",
        "Item 12", "Item 13", "Item 14", "Item 15","Item 12", "Item 13", "Item 14", "Item 15","Item 12", "Item 13", "Item 14", "Item 15"]

    var tableView:UITableView!;

    override func viewDidLoad() {
        super.viewDidLoad()

        self.view.backgroundColor = UIColor.blueColor();

        tableView = UITableView();
        tableView.frame = self.view.frame;
        tableView.registerClass(TableViewCell.self, forCellReuseIdentifier: "Cell");
        tableView.dataSource = self;
        tableView.delegate = self;
        self.view.addSubview(tableView)
    }

    func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        // Return the number of rows in the section.
        return tableItems.count
    }

    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as!  TableViewCell
        cell.setTextLabel(tableItems[indexPath.row] as! String);

        return cell
    }

    func tableView(tableView: UITableView, didDeselectRowAtIndexPath indexPath: NSIndexPath) {
        print("inexPath.row : " + String(indexPath.row));
    }
}


////////////////////////// table view cell
class TableViewCell:UITableViewCell{

    var label:UILabel!;

    func setTextLabel(new_text:String){

        if (label == nil){
            label = UILabel();
            label.frame = self.contentView.frame;
            label.textColor = UIColor.whiteColor();
            label.backgroundColor = UIColor.whiteColor();
            label.textColor = UIColor.blackColor();
            self.contentView.addSubview(label);
        }

        label.text = new_text;
    }
}

只能同时 select 编辑一个单元格。当您 select 另一个单元格时,您之前 select 编辑过的单元格将被默认删除select。这就是为什么 didDeselectRowAtIndexPath: 与前面的 indexPath

一起调用的原因

我认为你的问题是你使用 "didDeselectRowAtIndexPath" (didDeselectRowAtIndexPath) 而你想使用 "didSelectRowAtIndexPath".