Когда я звоню performSegueWithIdentifier
до viewDidLoad
и viewDidAppear
иногда это работает, а иногда нет.performSegueWithIdentifier before viewDidLoad и viewDidAppear иногда это работает, а иногда нет
AppDelegate
- (void)applicationDidBecomeActive:(UIApplication *)application {
NSLog(@"applicationDidBecomeActive");
[self abcNotif]; // the method post the notification.
}
VC1:
-(void)awakeFromNib {
NSLog(@"awakeFromNib");
[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(theNotif:) name:@"abcNotif" object:nil];
}
-(void)theNotif:(UILocalNotification*)notif {
if([[[NSUserDefaults standardUserDefaults]valueForKey:@"flag"]isEqualToString:@"YES"]) {
[self performSegueWithIdentifier:@"seg1" sender:self];
NSLog(@"theNotif = %@", [[notif userInfo]valueForKey:@"notif1Key"]);
}
}
Журналы в консоли
awakeFromNib
didFinishLaunchingWithOptions
applicationDidBecomeActive
theNotif = notif1Value
viewDidLoad
Все работает отлично хотя performSegueWithIdentifier
вызывается ранее до viewDidLoad
и viewDidAppear
. Но в некоторых сценариях это не работает. Почему это поведение. Народы также задавали тезисы диссертаций Why doesn't performSegueWithIdentifier work inside viewDidLoad?
после вызова [само просмотр] единственное изменение - viewDidLoad вызывается перед уведомлением. Но все же, как performSegueWithIdentifier работает перед viewDidLoad и viewDidAppear? –
Ну, если ваш segue нажимает другой ViewController, тогда как может viewController нажимать другой, прежде чем он окажется в самом стеке? – Jef
Вот что я прошу :) –