Swift 为什么 prepare func 不能正常工作
Swift Why prepare func does not work properly
我是 Swift 的新手。在我的 tableview controller 中我执行了 segue,我认为 prepare in landing view controller 会被调用。
// tableview controller
AF.request(url, headers: headers).responseDecodable(of: ProductEach.self) { response in
self.activityIndicator.stopAnimating()
if response.value!.error_message == "invalid product id" {
print("invalid product id")
} else {
//
// do bunch of things with the data I got before performing a segue
//
self.performSegue(withIdentifier: "GotoDetail", sender: self)
}
}
// landing viewcontroller
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
guard let destinationVC = segue.destination as? TableViewController else { return }
print("prepare called")
}
我在调试控制台中看不到 prepare 调用。
谁能告诉我我做错了什么?
提前致谢。
你的prepare
方法正好相反。它应该在“from”(not“to”)视图控制器中,它是 TableViewController
,而不是 DetailViewController
。而且,您应该将 segue.destination
与 DetailViewController
进行比较,而不是 TableViewController
.
// inside TableViewController
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
guard let destinationVC = segue.destination as? DetailViewController else { return }
print("prepare called")
}
我是 Swift 的新手。在我的 tableview controller 中我执行了 segue,我认为 prepare in landing view controller 会被调用。
// tableview controller
AF.request(url, headers: headers).responseDecodable(of: ProductEach.self) { response in
self.activityIndicator.stopAnimating()
if response.value!.error_message == "invalid product id" {
print("invalid product id")
} else {
//
// do bunch of things with the data I got before performing a segue
//
self.performSegue(withIdentifier: "GotoDetail", sender: self)
}
}
// landing viewcontroller
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
guard let destinationVC = segue.destination as? TableViewController else { return }
print("prepare called")
}
我在调试控制台中看不到 prepare 调用。
谁能告诉我我做错了什么?
提前致谢。
你的prepare
方法正好相反。它应该在“from”(not“to”)视图控制器中,它是 TableViewController
,而不是 DetailViewController
。而且,您应该将 segue.destination
与 DetailViewController
进行比较,而不是 TableViewController
.
// inside TableViewController
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
guard let destinationVC = segue.destination as? DetailViewController else { return }
print("prepare called")
}