Отклонить контроллер представления от предыдущего контроллера представления - PullRequest
0 голосов
/ 26 апреля 2018

Я знаю, что многие люди могут задать этот вопрос. Я также нашел решение, но я не могу понять, что не так в моем коде?

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
        }
    }
}

Ответы [ 2 ]

0 голосов
/ 26 апреля 2018

Если вы сделали self.present(ViewController, animated: true, completion: nil) из предыдущего ViewController, чтобы показать текущий 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)

0 голосов
/ 26 апреля 2018

Обновление от вашего комментария: Вы не представили viewController. Вы нажали какой-то контроллер вида. Так что просто поп это. сбросьте dismiss

self.delegate?.sendgetattid(pop_att_id: send_pop_att_id, pop_in_time: send_pop_in_time)
self.navigationController?.popViewController(animated: true)
...