Я будую додаток для iOS за допомогою Storyboard. Контролером кореневого перегляду є контролер панелі вкладок. Я створюю процес входу / виходу, і він працює нормально, але у мене є кілька проблем. Мені потрібно знати найкращий спосіб налаштувати все це.
Я хочу досягти наступного:
- Показати екран входу при першому запуску програми. Коли вони ввійдуть у систему, перейдіть на першу вкладку контролера панелі вкладок.
- Кожен раз, коли вони запускають додаток після цього, перевірте, чи вони ввійшли в систему, і перейдіть прямо до першої вкладки кореневого контролера панелі вкладок.
- Коли вони вручну натискають кнопку виходу, покажіть екран входу та очистіть усі дані з контролерів перегляду.
Що я вже робив, це встановити контролер кореневого виду на контролер панелі вкладок і створити користувацький segue для мого контролера перегляду входу. Всередині мого класу "Контролер бар" я перевіряю, чи вони увійшли в viewDidAppear
метод, і чи виконуються виразки:[self performSegueWithIdentifier:@"pushLogin" sender:self];
Я також налаштовую сповіщення про те, коли потрібно виконати дію виходу: [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(logoutAccount) name:@"logoutAccount" object:nil];
Після виходу я очищаю облікові дані від брелка, запускаю [self setSelectedIndex:0]
та виконую програму, щоб знову показати контролер перегляду входу.
Це все добре працює, але мені цікаво: чи повинна ця логіка бути в AppDelegate? У мене також є два питання:
- Перший раз, коли вони запускають додаток , контролер Tab Bar показує задовго до того, як буде здійснено segue. Я спробував перемістити код,
viewWillAppear
але segue не спрацює так рано. - Коли вони виходять із системи, усі дані залишаються всередині контролерів перегляду. Якщо вони увійдуть у новий обліковий запис, старі дані облікового запису все ще відображатимуться, поки вони не оновляться. Мені потрібен спосіб легко це очистити під час виходу.
Я відкритий для переробки цього питання. Я розглядав питання про те, щоб зробити екран входу коректором кореневого виду або створити контролер навігації в AppDelegate, щоб обробити все ... Я просто не впевнений, який найкращий метод на даний момент.