PFLoginViewController Как переключаться между экраном входа и главной страницей? Быстрый

Я пытаюсь использовать PFLoginViewController для создания простого экрана входа в систему для моего приложения. Проблема, с которой я сталкиваюсь, заключается в возможности переключения между экраном входа в систему и главной страницей приложения на основе вывода .currentUser().

Я смог выполнить это в Objective C, используя этот метод:

AppDelegate.m

введите здесь описание изображения введите здесь описание изображения

Логинвиевконтроллер.м

введите здесь описание изображения

введите здесь описание изображения

Я использую Swift в своем новом приложении и пытаюсь продублировать метод, который я использовал в Objective C, но я получаю эту ошибку, и симулятор полностью черный.]

введите здесь описание изображения

Вот как выглядит мой код в Swift.

AppDelegate

введите здесь описание изображения

ЛогинВК

введите здесь описание изображения

Я немного изучил это и увидел, что это проблема с viewDidLoad вместо использования viewWillAppear, но я не вижу приложения к моей проблеме, потому что оно работало в Objective C в didFinishLaunchingWithOptions, а также методы делегата PFLoginViewController не не звонил viewDidLoad.

Любые подсказки относительно того, что является моей большой ошибкой?


person Wesley Cho    schedule 24.09.2015    source источник


Ответы (2)


Я исправил проблему, которая у меня была.

AppDelegate

введите здесь описание изображения

Вместо presentViewController я использовал pushViewController

введите здесь описание изображения

person Wesley Cho    schedule 24.09.2015

В Obj-C вы получаете контроллер навигации из окна (контроллер корневого представления), поэтому он представлен. В Swift вы создаете новый навигационный контроллер, а затем вы можете снова создать еще один новый навигационный контроллер с корневым контроллером представления. Ни один из них не представлен, поэтому попытка использовать их для чего-то другого, кроме представления, не сработает. Это существенное логическое изменение между двумя примерами кода. Ничто не мешает вам следовать одному и тому же подходу на каждом языке, и это должно устранить вашу ошибку.

person Wain    schedule 24.09.2015
comment
Что касается кода Objective C, я предполагаю, что вы имеете в виду этот фрагмент? UINavigationController *navVC = (UINavigationController *) self.window.rootViewController; Я знаю, что этот фрагмент кода получает контроллер навигации из раскадровки, а затем устанавливает его как rootViewController, но как это сделать в swift? - person Wesley Cho; 24.09.2015
comment
Да. Нет, это не так. Навигационный контроллер уже распакован из раскадровки и установлен в окне как корневой контроллер представления, этот код получает этот корневой контроллер представления. Код для этого в Swift в основном идентичен из-за записи через точку. - person Wain; 25.09.2015