私は一度も見たことがないものに遭遇しました。シナリオは次のとおりです。私の最初のVCには登録ボタンがあり、ヒットすると2つの別個のView Controllerが登録手続きを処理します(私はユーザーの資格情報を要求し、必要な場合は確認コードを要求します)。このプロセスが完了すると、後で必要となるカスタムオブジェクトをNSUserDefaultsに保存します。その後、最初のVCが再び表示されます。ViewController 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"];
}
}
私はMainVCで最初のVCを接続するセグエを持って、そのセグエの識別子は「pushMainVC」に一致する、と私は閉じてseguesが発生した(入学後)アプリを再度開きます。
APPNAME [4106::1628238]メインスレッド - はい
APPNAME [4106:1628238]を開始します(登録やアプリをいったん閉じてから再び開いた後、最初のVCをリロード)両方のインスタンスのコンソール出力は、次のとおりでありますpushToAuthenticate
APPNAME [4106:1628238] PrepareForSegue-pushMainVC
これが起こる可能性があり、なぜすべてのアイデアは、どんな小さな事は、私が欠けている、または任意のヘルプは大歓迎されます。どうもありがとうございます。
NSUserDefaultはNSObjectのサブクラスのカスタムオブジェクトを保存しません。私は –
を知っています。あなたは 'viewDidLoad'の代わりに' viewWillAppear'を押してみましたか? – dirtydanee
[ViewDidLoadでSegueを実行する]の可能な複製(http://stackoverflow.com/questions/8221787/perform-segue-on-viewdidload) – dirtydanee