我遇到了一些我從未見過的東西。情景如下。我最初的VC有一個註冊按鈕,當被點擊時,會引起一對獨立的視圖控制器處理註冊過程(我要求用戶憑據,如果服務器要求,我要求輸入驗證碼)。當這個過程完成後,我將一個自定義對象保存到稍後需要的NSUserDefaults中。然後再次顯示初始VC。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"];
}
}
在故事板我有初始VC與MainVC連接一SEGUE,對於賽格瑞標識符相匹配「pushMainVC」,如果我關閉並重新打開該應用程序(登記後)塞格斯確實發生。控制檯輸出爲兩個實例(登記和關閉並重新打開該應用之後重新加載初始VC)如下:
APPNAME [4106:1628238]主線程是
APPNAME [4106:1628238]將開始pushToAuthenticate
APPNAME [4106:1628238] PrepareForSegue-pushMainVC
任何想法,爲什麼這可能發生,任何一件小事我的思念,或任何幫助將不勝感激。非常感謝。
NSUserDefault並沒有保存NSObject的子類自定義對象,據我所知 –
你試過在'viewWillAppear'而不是'viewDidLoad'中推入segue嗎? – dirtydanee
可能重複的[對ViewDidLoad執行Segue](http://stackoverflow.com/questions/8221787/perform-segue-on-viewdidload) – dirtydanee