Я реализовал пользовательский метод делегирования, который должен появиться в контроллере корневого представления, если некоторые данные поступают с сервера. Нажав кнопку «Назад» в дочернем контроллере, 1-й метод back()
проверяет, были ли внесены какие-либо изменения в текстовые поля и отображен лист UIActionSheet в случае внесения некоторых изменений.iOS popToRootViewControllerAnimated не работает над методом делегата
1.
func back() {
if modified {
let actionSheet = UIActionSheet(title: NSLocalizedString("SAVESETTINGS", comment: "Settings were changed. Do you want to save them?"), delegate: self, cancelButtonTitle: "No", destructiveButtonTitle: "Yes")
actionSheet.actionSheetStyle = .Default
actionSheet.showInView(self.view)
}
else {
self.navigationController?.popToRootViewControllerAnimated(true)
}
}
метод делегата ActionSheet отправляет данные и контроллер ждет ответа
2.
func actionSheet(actionSheet: UIActionSheet, clickedButtonAtIndex buttonIndex: Int) {
if buttonIndex == 0 {
self.socket.send(someData, tag: someTag)
}
else {
self.modified = false
self.navigationController?.popToRootViewControllerAnimated(true)
}
}
Делегат проверяет метод, если право ответ здесь и должен появиться в контроллере корневого представления.
3.
func ackReceived(tag: Int32) {
if tag == someTag {
self.navigationController?.popToRootViewControllerAnimated(true)
}
}
Корневые выскакивает вид контроллера в 1-й и 2-й метод, если не существует каких-либо изменений или, если кнопка второй нажата в UIActionSheet, но он не работает в 3d метода.
Все методы называются. Я в конечном итоге по
self.navigationController?.popToRootViewControllerAnimated(true)
Я также проверил отладчик, контроллер навигации не nil
.
Надеюсь, вы сможете помочь мне с этой проблемой. Большое спасибо заранее.
Что такое я в третьем примере? Добавьте 'NSLog (@"% @ ", self)' –
, эти 3 метода находятся в одном контроллере. – D051P0
Мне все равно, где они, я хочу знать, что вы видите в журнале. (Извините, это не значит быть суровым). –