将视图控制器关闭到上一个视图控制器
Dismiss view controller to previous view controller
我知道很多人可能会问这个问题。我也找到了解决方案,但我无法理解我的代码中有什么问题?
popcontroller.swift:
protocol DataSendDelegate {
func sendgetattid(pop_att_id: Int, pop_in_time: String)
}
var delegate: DataSendDelegate? = nil
if statuss == "200" {
let send_pop_att_id = att_id
let send_pop_in_time = in_time
self.navigationController?.popViewController(animated: true)
self.dismiss(animated: true) {
self.delegate?.sendgetattid(pop_att_id: send_pop_att_id, pop_in_time: send_pop_in_time)
}
}
在上面的代码中,我得到了正确的值,但它并没有关闭并转到下一个视图控制器。
attendanceViewController.swift:
class attendanceViewController: UIViewController , DataSendDelegate {
func sendgetattid(pop_att_id: Int, pop_in_time: String) {
DispatchQueue.main.async {
self.inTimeTextField.text = pop_in_time
self.get_att_id = pop_att_id
self.in_time_button.isEnabled = false
self.out_time_button.isEnabled = true
}
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if let popVC = segue.destination as? PopUpViewController
{
popVC.popEmailID = att_emp_id
popVC.delegate = self
}
}
}
根据您的评论更新:
你没有出席 viewController。你已经推送了一些视图控制器。所以就弹出它。丢弃 dismiss
self.delegate?.sendgetattid(pop_att_id: send_pop_att_id, pop_in_time: send_pop_in_time)
self.navigationController?.popViewController(animated: true)
如果您从之前的 ViewController 中执行了 self.present(ViewController, animated: true, completion: nil)
以显示当前的 viewcontroller,您必须执行
self.dismiss(animated: true) {
self.delegate?.sendgetattid(pop_att_id: send_pop_att_id, pop_in_time: send_pop_in_time)
}
或者如果你做了 self.navigationController?.pushViewController(ViewController, animated: true)
你必须做 self.navigationController?.popViewController(animated: true)
我知道很多人可能会问这个问题。我也找到了解决方案,但我无法理解我的代码中有什么问题?
popcontroller.swift:
protocol DataSendDelegate {
func sendgetattid(pop_att_id: Int, pop_in_time: String)
}
var delegate: DataSendDelegate? = nil
if statuss == "200" {
let send_pop_att_id = att_id
let send_pop_in_time = in_time
self.navigationController?.popViewController(animated: true)
self.dismiss(animated: true) {
self.delegate?.sendgetattid(pop_att_id: send_pop_att_id, pop_in_time: send_pop_in_time)
}
}
在上面的代码中,我得到了正确的值,但它并没有关闭并转到下一个视图控制器。
attendanceViewController.swift:
class attendanceViewController: UIViewController , DataSendDelegate {
func sendgetattid(pop_att_id: Int, pop_in_time: String) {
DispatchQueue.main.async {
self.inTimeTextField.text = pop_in_time
self.get_att_id = pop_att_id
self.in_time_button.isEnabled = false
self.out_time_button.isEnabled = true
}
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if let popVC = segue.destination as? PopUpViewController
{
popVC.popEmailID = att_emp_id
popVC.delegate = self
}
}
}
根据您的评论更新:
你没有出席 viewController。你已经推送了一些视图控制器。所以就弹出它。丢弃 dismiss
self.delegate?.sendgetattid(pop_att_id: send_pop_att_id, pop_in_time: send_pop_in_time)
self.navigationController?.popViewController(animated: true)
如果您从之前的 ViewController 中执行了 self.present(ViewController, animated: true, completion: nil)
以显示当前的 viewcontroller,您必须执行
self.dismiss(animated: true) {
self.delegate?.sendgetattid(pop_att_id: send_pop_att_id, pop_in_time: send_pop_in_time)
}
或者如果你做了 self.navigationController?.pushViewController(ViewController, animated: true)
你必须做 self.navigationController?.popViewController(animated: true)