Сначала объявите переменную enum:
typedef enum {
StatusLoggedOut,
StatusAttemptingLogin,
StatusLoggedIn
} LoginStatus;
Затем добавьте переменную-член в ваш контроллер представления для сохранения статуса входа. Затем внутри viewDidAppear: вы можете сделать это:
- (void)viewDidAppear:(BOOL)animated
{
if (loginStatus == StatusLoggedOut) {
loginStatus = StatusAttemptingLogin;
// start the NSURLConnection
}
}
Когда вход в систему завершен, вы можете переключить статус на StatusLoggedIn или StatusLoggedOut (в зависимости от того, как это получилось).
Вы могли бы сойти с рук с простой BOOL, но опыт научил меня, что лучше представлять все промежуточные состояния.
Кроме того, вы не спрашивали об этом, но я думаю, что было бы намного удобнее, если бы вы представляли экран входа в систему как модальное представление; использование popToRootViewController
приведет к тому, что пользователь потеряет свое место в вашем приложении, что раздражает. (Если вы не сохраняете и не восстанавливаете его, в этом случае вы делаете много работы для себя.)