ДЗ с урока - 23. UIPageViewController: Part 4


#1

Есть аналоговое решение в Задание 23-го урока UIKit, но оно “полукастыльное”. Там нужно было реализавать метод в PageVC с куском кода:

let userDefaults = UserDefaults.standard
userDefaults.set(true, forKey: “presentationWasViewed”)
dismiss(animated: true, completion: nil)

А в ContentVC создать экземпляр PageVC и через кнопку обратится к этой функции, которая выполняет блок кода, после выполнения которого ViewController закрывается.
Так вот у меня 2 вопроса, почему решение ниже - не работает?

func setPresentationStatusToDone() {
    let userDefaults = UserDefaults.standard
    userDefaults.set(true, forKey: "presentationWasViewed")
    dismiss(animated: true, completion: nil)
}

И затем вызвать этот метод из вашего экшина skipButton через экземпляр класса pageViewController :

@IBAction func skipButton(_ sender: UIButton) {
    let pageVC = PageViewController()
    pageVC.setPresentationStatusToDone()
}

и вопрос номер 2, у меня, если не менять forKey: “presentationWasViewed” на Viewed1,2… презентация открывается только 1 раз, это же странно разве нет? Я понимаю, что она по факту так и должна работать, но на момент разработки и тестирования это крайне неудобно же, как решить?


#2

Не знаю, что там за урок, но по коду получается так:
dismiss дисмисит текущий контроллер, вы же вызываете в кнопке текущего контроллера метод другого контроллера… он его и дисмисит (хотя вы его и не показали даже), а вам надо видимо дисмис текущего.