我正在尝试使用三个分层的 tableView 构建我的第一个应用程序。中间VC有两个guard let in one prepare for segue function。
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
guard let destination = segue.destination as? AddMemberViewController else {
return
}
destination.club = club
guard let Destination = segue.destination as? TransactionViewController, let selectedRow = self.tableViewMember.indexPathForSelectedRow?.row else {
return
}
Destination.member = members[selectedRow]
}
原来是这样的。我可以解决这个问题吗,我的应用程序会同时使用这两个函数,因为它只使用顶部的函数。
最佳答案
问题是如果你想转至 TransactionViewController 函数已经返回,因为 segue.destination 不是 AddMemberViewController。
相反,您应该为您的 segue 提供不同的标识符,并在 prepareForSegue
中请求它们。像这样:
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "AddMemberVCSegue" {
guard let destination = segue.destination as? AddMemberViewController else {
return
}
destination.club = club
}
if segue.identifier == "TransactionVCSegue" {
guard let Destination = segue.destination as? TransactionViewController, let selectedRow = self.tableViewMember.indexPathForSelectedRow?.row else {
return
}
Destination.member = members[selectedRow]
}
}
关于swift - 在 prepare for segue 函数中添加两个 guard let,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51008405/