В тройку ответов можно решить мои вопросы. Трудно выбрать, какой из них лучше. Итак, я просто выбираю того, кто первым отвечает на мой вопрос. Извините за любителя и iOSEnthusiatic. Спасибо за помощь. Я ценю это.Перезагрузите и не перезагрузите, если нажать обратно с разных контроллеров. Swift
ViewController 1 имеет вид таблицы.
Мой вопрос заключается в том, чтобы перезагрузить вид таблицы, только если я нажимаю назад от вида контроллера 2, а не перезагружать вид таблицы, если я нажимаю назад от просмотра контроллера 3.
Прямо сейчас, мой код для кнопки возврата является
@IBAction func backButtonTapped(sender: AnyObject) {
self.dismissViewControllerAnimated(true, completion: nil)
}
в контроллере представления 1. Я знаю, что вид таблицы будет перезагружен с любой вид контроллера 2 или 3
override func viewDidAppear(animated: Bool) {
loadTable()
}
Я попытался поставить loadTable() в viewDidLoad и попробуйте написать приведенный ниже код для кнопки «Назад» в контроллере 2, но он не работает.
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let controller = storyboard.instantiateViewControllerWithIdentifier("UserHomePageViewController") as! UserHomePageViewController
controller.viewDidLoad()
Любое предложение, что мне следует делать? Спасибо за помощь.
EDIT:
Я думаю, что это простой способ сделать это, но он все еще не работает, как я думал. Я думаю, это потому, что viewDidAppear выполняется до вызова reloadTableBool. Верный? Есть ли способ исправить это? Спасибо. Вы поможете получить оценку.
class 2ViewController
@IBAction func backButtonTapped(sender: AnyObject) {
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let controller = storyboard.instantiateViewControllerWithIdentifier("1ViewController") as! 1ViewController
print("viewcontroller2 before call: \(controller.reloadTableBool)")
controller.reloadTableBool = false
print("viewcontroller2 after call: \(controller.reloadTableBool)")
self.dismissViewControllerAnimated(true, completion: nil)
}
class 1ViewController
var reloadTableBool = true
override func viewDidAppear(animated: Bool) {
print("viewcontroller1: \(reloadTableBool)")
if reloadTableBool == true {
loadTable()
}
}
Когда я нажимаю назад на вид контроллера 2, он печатает
viewcontroller2 before call: true
viewcontroller2 after call: false
viewcontroller1: true
Вы используете кнопку назад вы получаете от навигационного контроллера или вы создали один, и добавил его вручную? – Eendje
Я перетаскиваю элемент панели бара в панель навигации и создаю функцию для этой кнопки как «назад». Думаю, я создаю его вручную. –
На ваших снимках экрана показано, что вы используете навигационный контроллер. Почему бы вам не использовать кнопку «Создать в задней панели»? – Eendje