如何在我的 segue 准备功能中访问 TableView 索引路径?

Posted

技术标签:

【中文标题】如何在我的 segue 准备功能中访问 TableView 索引路径?【英文标题】:How can I access UITableView's index path in my segue prepare function? 【发布时间】:2020-04-15 22:02:40 【问题描述】:

我正在尝试从准备函数中的 tableView 函数访问 stringSchoolID 变量。它是一个动态变量,随着单击 TableView 中的不同行项而变化。数组由 Firebase 填充,因此我删除了这部分代码 - 您可以假设它们已填充,因为我已经对此进行了测试。

作为一种解决方案,我尝试在函数之外声明变量,但这不起作用,目标 segue 只收到一个空字符串(因为它已被声明)。感谢所有帮助!

class SearchViewController: UIViewController 

    @IBOutlet weak var tableViewSearch: UITableView!

    struct School 
        let schoolID: String
        let schoolName: String
        let schoolTown: String
        let schoolCountry: String
    

    var schoolArray: [School] = []

    override func viewDidLoad() 
        super.viewDidLoad()
        // Do any additional setup after loading the view.
        


extension SearchViewController: UITableViewDataSource, UITableViewDelegate 

    func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) 
        performSegue(withIdentifier: "SearchSelectionSegue", sender: self)
        var stringSchoolID: String = self.schoolArray[indexPath.row].schoolID
        print(stringSchoolID)
    

    override func prepare(for segue: UIStoryboardSegue, sender: Any?) 
        let searchSelectionSegue = segue.destination as! SchoolProfileViewController
        searchSelectionSegue.stringSegue = 
    

【问题讨论】:

【参考方案1】:

您可以执行以下操作:

let stringSchoolID = self.schoolArray[indexPath.row].schoolID    
performSegue(withIdentifier: "SearchSelectionSegue", sender: stringSchoolID)

在:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) 
    let searchSelectionSegue = segue.destination as! SchoolProfileViewController
    searchSelectionSegue.stringSegue = sender as? String

【讨论】:

【参考方案2】:

您可以使用tableView.indexPathForSelectedRow?.row 来获取所选单元格的索引。

 override func prepare(for segue: UIStoryboardSegue, sender: Any?) 
        let searchSelectionSegue = segue.destination as! SchoolProfileViewController
        guard let index: Int = tableView.indexPathForSelectedRow?.row else  return 
        searchSelectionSegue.stringSegue = schoolArray[index].schoolID
    

【讨论】:

以上是关于如何在我的 segue 准备功能中访问 TableView 索引路径?的主要内容,如果未能解决你的问题,请参考以下文章

为 segue 做准备没有按预期工作

如何在准备中的 switch 语句中使用可选绑定(segue :)

准备 Segue 到 UITabBarController 选项卡

如何访问存储在我的 UICollectionViewController 中的集合视图单元格中的变量

如何从 Table Cell 返回另一个 UIViewController

程序化嵌入 segue