【问题标题】:Cant trigger segue when selecting a table view cell (at once)选择表格视图单元格时无法触发segue(一次)
【发布时间】:2019-01-07 12:53:34
【问题描述】:

我正在制作一个待办事项列表应用程序并有两个视图控制器,我必须将所选行的索引路径从 CategoryViewController 传递到 ItemsViewController 并触发 Segue... This Is my Category View Controller

但是当我单击其中一个单元格时,它只是被选中但没有触发 segue Heres How 但是当我在选择第一个后选择另一个单元格时触发了 segue...这是我的代码

override func tableView(_ tableView: UITableView, didDeselectRowAt indexPath: IndexPath) {
    performSegue(withIdentifier: "goToItems", sender: self)
}

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    print("sucess")

    let destinationVC = segue.destination as! ToDoListViewControlorer
    if let indexPath = tableView.indexPathForSelectedRow {
        destinationVC.selectedCategory = categoriesArray[indexPath.row]

    }

}

【问题讨论】:

  • 不是didDeselectRowAt 它的didSelectRowAt
  • 谢谢!!!!!!!!!!!!

标签: ios swift


【解决方案1】:

将您的indexPath.row 发送至argument 的发件人performSegue

func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
        performSegue(withIdentifier: "youridentifier", sender: indexPath.row)
}

从 sender 参数中获取 indexPath.row 并传递给 ToDoListViewControlorer

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    print("sucess")

    let destinationVC = segue.destination as! ToDoListViewControlorer
    if let indexPathRow = sender as? Int {
        destinationVC.selectedCategory = categoriesArray[indexPathRow]

    }

}

【讨论】:

    【解决方案2】:

    首先,覆盖didSelectRowAt 方法,因为您要处理用户选择行的时刻,而不是取消选择。也作为sender传递所选项目

    override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { 
        performSegue(withIdentifier: "goToItems", sender: categoriesArray[indexPath.row]) 
    }
    

    然后在prepare(for:sender:) 中只是向下发送者

    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        if let destinationVC = segue.destination as? ToDoListViewControlorer {
            destinationVC.selectedCategory = sender as! Category
        }
    }
    

    附言将您的控制器命名为 Controller,而不是 Controlorer

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多