Как мне управлять представлением входа в систему в приложении на основе навигации? - PullRequest
0 голосов
/ 19 марта 2012

Я создаю приложение для iphone в объективе C. На данный момент у меня есть UINavigationController в начале моего приложения и остальная часть навигации была обработана от него.

Теперь я хочу вставить экран входа в систему при загрузке приложения.

Как сделать его независимым от остальной части приложения? т.е. на данный момент я создал LoginViewController и добавил его в NavigationViewController моего приложения. Когда пользователь успешно войдет в систему, приложение продолжит работу со следующим экраном, помещаемым в Navigation Controller. Но проблема с этим подходом состоит в том, что я все еще могу вернуться к начальному экрану входа в систему с помощью элемента навигации.

Я пытался скрыть панель навигации на первом экране после входа в систему, но она удаляет панель навигации на каждом из последующих экранов.

Единственное работающее решение, о котором я могу подумать, это то, что я должен вручную скрыть панель навигации на начальном экране и сделать ее видимой на последующих экранах. Есть ли другой здравый подход?

Ответы [ 5 ]

2 голосов
/ 19 марта 2012

Я бы, вероятно, сделал ваш навигационный контроллер без учета экрана входа в систему, а затем представил бы экран входа в систему с помощью presentModalViewController: animated:

0 голосов
/ 19 марта 2012

Я бы предложил спрятать кнопку назад на вашем первом контроллере вида и показать все остальные контроллеры вида.

-(void)viewWillAppear:(BOOL)animated {
    self.navigationItem.hidesBackButton=YES;
}

В противном случае другое решение состоит в том, чтобы представить элемент управления loginview в методе viewDidLoad вашего контроллера первого вида и по завершении входа в систему отклонитьпредставленный logincontroller на кнопке входа в систему.

Даже это стандартный способ реализации, все приложения, имеющие средство входа в систему, будут иметь такой тип потока.

Надеюсь, это поможет вам.

0 голосов
/ 19 марта 2012

Вам необходимо сохранить в UserDefaults какое-то значение - автоматический вход в систему / сделал вход в систему, и когда приложение запускается, вы проверяете это значение, если пользователь не находится в системе, вам нужно создать контроллер представления входа в систему и представить его модально. Перед тем, как ваш первый вид появится, вам нужно что-то вроде этого -

BOOL didLogin = [[NSUserDefaults standardUserDefaults]boolForKey:@"isLogin"];
if (!didLogin) {
    LoginViewController *loginVC = [[LoginViewController alloc]init];
    [self presentModalViewController:loginVC animated:NO];
}

и когда пользователь входит в систему, вам нужно сохранить значение по умолчанию

[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"isLogin"];

если вы хотите использовать функцию автоматического входа, вы должны хранить пароль в связке ключей

0 голосов
/ 19 марта 2012

Если пользователь не авторизован в приложении, покажите LoginViewController и не разрешайте пользователю переходить к контроллеру навигации до этого момента. После входа в систему не показывать LoginViewController напрямую отображать контроллер навигации, чтобы пользователю не приходилось подписывать снова и снова. Для хранения информации о входе пользователя используйте NSUserDefaults. Получить информацию при загрузке приложения и соответственно отобразить контроллеры.

Приветствия

0 голосов
/ 19 марта 2012

представьте свой LoginViewController в viewDidLoad для navigationController после того, как пользователь войдет в систему, и вы отклоните его и продолжите работу экрана так, как вам хочется. Кроме того, вы можете сохранить этого пользователя для входа в свое приложение в NSUserDefault, чтобы вы могли проверить это значение и представить loginView, если он не вошел в систему, в противном случае вы увидите экран навигации как обычно

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...