очистка переменных контроллера корневого представления при программном переключении вкладок - PullRequest
0 голосов
/ 15 мая 2019

У меня есть раскадровка / корневой viewcontroller в качестве третьей вкладки моего приложения.На этой вкладке пользователь выбирает изображение и записывает заголовок, который хранится в виде переменных.Из корневого контроллера просмотра пользователь выводится на экран предварительного просмотра с помощью перехода, который передает переменные, то есть изображение и текст.На этом экране пользователь публикует объект.С помощью кнопки «Публикация» я запускаю viewcontroller и программно перехожу на первую вкладку моего приложения.Это все работает, но проблема в том, что когда я возвращаюсь на третью вкладку, сохраненные переменные все еще там, и я бы хотел, чтобы они были удалены.

Я видел много сообщений о хранении переменных, но ни одного о том, как их сбросить.Я пытался использовать viewWillDissapear, но я не хочу, чтобы они очищались при использовании перехода, потому что я хочу, чтобы пользователь мог вернуться и внести некоторые изменения, если это необходимо.

ОБНОВЛЕННЫЙ КОД С ПРАВИЛЬНЫМ ОТВЕТОМ

@IBAction func postButtonPressed(_ sender: Any) {




        PostFunction.createPost(image: self.postImage, postText: self.hashtag) { (true) in


            self.tabBarController?.selectedIndex = 0

            let tab3 = self.tabBarController!.viewControllers![2] as! UINavigationController
            let vc = tab3.viewControllers.first as! PostHomeVC
            vc.clear()

            self.navigationController?.popViewController(animated: false)
        }
    }

Есть предложения о том, как "сбросить" контроллер rootview из описанного выше метода?

Спасибо!

1 Ответ

1 голос
/ 15 мая 2019

Я запускаю viewcontroller и программно перехожу на первую вкладку моего приложения

перед тем, как выполнить программный переход на первую вкладку, выполните

let tab3 = self.tabBarController.viewControllers[2] as! UINavigationController
let vc = tab3.viewControllers.first as! VCName
vc.clear()

или

let vc = self.navigationController!.viewControllers.first as! VCName
vc.clear()

и напишите этот clear метод внутри vc, как вам нужно

...