我正在制作一份清单,是否有可能选择和取消选择Segue

时间:2017-03-15 13:34:53

标签: ios swift xcode uitableview

我的UITableView中有一个清单,我也有一个segue链接了这个单元格。是否可以在同一单元格中选择/取消选择和segue。因为当我单击复选框时,它会选择并转移到另一个VC。就像两者的选择区域一样。

override func viewDidLoad() {

    super.viewDidLoad()

    [tableView .setEditing(true, animated: true)]
 }

override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {

        performSegue(withIdentifier: "details", sender: self)
        tableView.deselectRow(at: indexPath, animated: true)
        NSLog("user selected", list)
   }

override func tableView(_ tableView: UITableView, didDeselectRowAt indexPath: IndexPath) {
    NSLog("user de-selected", list)
}


override func tableView(_ tableView: UITableView, editingStyleForRowAt indexPath: IndexPath) -> UITableViewCellEditingStyle {
    return UITableViewCellEditingStyle(rawValue: 3)!
}

1 个答案:

答案 0 :(得分:0)

以下是我想说的一个例子 我的故事板看起来像这样。Storyboard
这是ViewController类的代码。
从那里我设置按钮的目标方法和按钮标签。
从按钮的选择器获取该标签并传递给perfromSegue并从那里传递到NextViewController

class ViewController: UIViewController {
    func nextButtonClicked(_ sender: UIButton) {
        let index = sender.tag
        performSegue(withIdentifier: "goToNextVC", sender: index)
    }

    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        if segue.identifier == "goToNextVC" {
            let index = sender as! Int
            let vc = segue.destination as! NextViewController
            vc.someValue = index
        }
    }
}
extension UIViewController: UITableViewDelegate, UITableViewDataSource {
    public func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return 15
    }
    public func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "myTableCell", for: indexPath) as! MyTableViewCell

        cell.lblTitle.text = "Row " + String(indexPath.row)
        cell.nextButton.tag = indexPath.row
        cell.nextButton.addTarget(self, action: #selector(ViewController.nextButtonClicked(_:)), for: .touchUpInside)

        return cell
    }
}

以下是NextViewController

的代码
class NextViewController: UIViewController {
    var someValue:Int!
    @IBOutlet weak var lblComingFrom: UILabel!
    override func viewDidLoad() {
        super.viewDidLoad()

        // Do any additional setup after loading the view.

        if someValue != nil {
            lblComingFrom.text = "I'm loaded via selecting row at index \(someValue!) "
        }
    }
}

希望这会对你有帮助......