Я столкнулся с чем-то, чего я никогда не видел. Сценарий выглядит следующим образом. В моем первоначальном VC есть кнопка регистрации, которая при нажатии вызывает несколько отдельных контроллеров представлений, связанных с процедурой регистрации (я запрашиваю учетные данные пользователя и, если требуется сервером, запрашиваю код подтверждения). Когда этот процесс будет завершен, я сохраняю пользовательский объект в NSUserDefaults, который понадобится позже. Затем снова указывается начальный ВК.ViewController не выполняет segue программно
В принципе, я уверен, что я в основном потоке и что пользовательский объект сохраняется. Если эти условия будут выполнены, я затем нажимаю основную часть приложения.
Вот соответствующий код, все мои журналы отображаются в окне вывода, но segue не происходит.
- (void)viewDidLoad {
[super viewDidLoad];
self.complete = false;
if([NSThread isMainThread]){
NSLog(@"Main Thread-Yes");
if ([[NSUserDefaults standardUserDefaults] objectForKey:@"CUSTOMOBJECT"]) {
NSLog(@"Will begin pushToAuthenticate");
[self pushAuthenticateController];
}
} else {
NSLog(@"Main Thread-No");
}
}
- (void)pushAuthenticateController{
[self performSegueWithIdentifier:@"pushMainVC" sender:self];
}
- (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if ([segue.identifier isEqualToString:@"pushMainVC"]) {
NSLog(@"PrepareForSegue-pushMainVC");
[segue.destinationViewController.navigationItem setHidesBackButton:YES];
[segue.destinationViewController.navigationItem setTitle:@"MainVC"];
}
}
В раскадровке у меня есть SEGUE, который соединяет начальный VC с MainVC, идентификатор для этого Segue соответствует «pushMainVC», и если я закрыть и снова открыть приложение (после поступления) имеет место в перетекает. Вывод консоли для обоих случаях (перегрузочные начальный VC после регистрации и закрытия и повторного открытия приложения), являются следующие:
APPNAME [4106: 1628238] Главная тема-да
APPNAME [4106: 1628238] Начнутся pushToAuthenticate
APPNAME [4106: 1628238] PrepareForSegue-pushMainVC
Любая идея, почему это могло произойти, любая маленькая вещь, которую я не хватает, или любая помощь будет принята с благодарностью. Огромное спасибо.
NSUserDefault не сохраняет пользовательские объекты подкласса NSObject, насколько я знаю –
вы пробовали нажать segue в 'viewWillAppear' вместо' viewDidLoad'? – dirtydanee
Возможный дубликат [Выполнить Segue on ViewDidLoad] (http://stackoverflow.com/questions/8221787/perform-segue-on-viewdidload) – dirtydanee