Переход от popUpV C к новому V C в ios Swift - PullRequest
0 голосов
/ 10 марта 2020

У меня есть SourceViewController, откуда я выскакиваю другой popUpViewController для выбора Даты. В popupViewController у меня есть кнопка «Отправить», которую я подключил, чтобы развернуть переход к SourceViewController.

Когда пользователь нажимает кнопку «Отправить», я использовал функцию для вызова API для сбора данных на основе дат и времени завершения. Я называю "расслабиться"

@IBAction func saveClicked(_ sender: UIButton){
 getData(fromDate: frmDt, toDate: toDt){(data) in
  if data != nil{
   self.performSegue(withIdentifier: "unwindsegue", sender: self)
  }
 }
}

На моем SourceViewController у меня уже есть переход, который выдвигает к NewViewController, который отображает данные, собранные с использованием API.

@IBAction func showNewVC(segue: UIStoryboardSegue){
 self.performSegue(withIdentifier: "showNewVC", sender: self)
}

Проблема заключается в том, что после перемотки, когда мой SourceViewController выполняет переход к newViewController, мгновенно переходит к newViewController и возвращает обратно к sourceViewController.

Я не понимаю, почему это происходит именно так. Я также проверил свою последовательность.

Если есть лучший способ выполнить такую ​​дату всплывающего окна, то также был бы рад узнать.

1 Ответ

0 голосов
/ 11 марта 2020

Я бы рекомендовал посмотреть на шаблон делегата. Чтобы сделать это, выполните следующие действия:

В контроллере представления выбора даты добавьте что-то вроде этого:

protocol datePickerDelegate {
  func datePicked(fromDate: frmDt, toDate: toDt)
}

Затем добавьте переменную для выбора даты v c типа datePickerDelegate, например так :

var delegate: datePickerDelegate?

Теперь, когда вы хотите выйти из контроллера представления выбора даты, запросите нужные данные и вызовите функцию datePickerDelegate, которую мы объявили выше:

delegate?.datePicked(fromDate: ...., toDate: ....)

Чтобы сделать все В этой работе вам необходимо добавить контроллер представления источника в качестве делегата для контроллера представления выбора даты. Чтобы сделать это, вам нужно расширить метод segue примерно так:

@IBAction func showNewVC(segue: UIStoryboardSegue){
  if let vc = segue.destination as? DatePickerViewController (make sure this is the correct class) {
    vc.delegate = self
  }
 self.performSegue(withIdentifier: "showNewVC", sender: self)
}

Я не уверен, что это сработает, так как сейчас я не могу его кодировать. Но я рекомендую вам посмотреть некоторые учебники по шаблону делегирования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...