为Segue做准备:将一个VC转换为具有可选选项的另一个VC?

时间:2019-10-29 14:38:08

标签: swift uiviewcontroller uistoryboardsegue

我有一个变量usernameSelected,我想发送给另一个VC。

第一个VC:

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    tableView.deselectRow(at: indexPath, animated: true)

    let usernameSelectedRow = picUsernameArray[indexPath.row]
    usernameSelected = usernameSelectedRow
    print(usernameSelectedRow)   --> [this prints the right data]
    print(usernameSelected)      --> [this prints the right data]
    performSegue(withIdentifier: "goToProfileSelected", sender: self)

}

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if segue.identifier == "goToProfileSelected" {
        let destination = segue.destination as?
        OtherUserProfileViewController
        print(usernameSelected) ---> [this prints nil!!!!]
        destination!.usernameValue = usernameSelected ---> [this returns nil to second VC]
    }
}

1 个答案:

答案 0 :(得分:0)

确实选择了:

self.performSegue(withIdentifier: "goToProfileSelected", sender: indexPath) //pass indexPath

现在准备进行搜寻:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    let index = sender as? IndexPath {
        let name = self.picUsernameArray[index.row]
        destination.usernameValue = name
    } 
}