Это странная ошибка накопления, которая несколько раз подталкивает мои VC на Nav VC.Один NSNotification отправлен, но многие селекторы называются
У меня есть UINavigationController с rootViewController, установленным в CWLandingVC (lvc).
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
CWLandingVC *lvc = [[CWLandingVC alloc] init];
UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:lvc];
...
}
На LVC, пользователь входит в систему, и когда мой класс APIClient получает успешный ответ сервера он отправляет уведомление:
NSNotification* notification = [NSNotification notificationWithName:@"sessionArrived" object:self];
NSLog(@"APIClient Posting notification for sessionArrived");
[[NSNotificationCenter defaultCenter] postNotification:notification];
В НОП прослушивает это и посылает этот селектор соответственно:
NSNotificationCenter *center = [NSNotificationCenter defaultCenter];
[center addObserver:self
selector:@selector(toPagebookWorkspace)
name:@"sessionArrived"
object:client];
...
- (void)toPagebookWorkspace {
NSLog(@"lvc Calling toPagebookWorkspace for session %@. Opening PagebookWorkspace view.", [self sessionId]);
CWWorkspaceVCViewController *wvc = [[CWWorkspaceVCViewController alloc] init];
[[self navigationController] pushViewController:wvc animated:YES];
}
Ошибка возникает при входе пользователя в систему, успешно выполняет pushViewController: wvc, регистрируется обратно в lvc и записывается обратно. Когда они это делают, уведомление отправляется один раз m руда - которую я проверяю с помощью NSLog (@ «Уведомление о проводке для sessionArrived»); - но селектор toPagebookWorkspace вызывается дважды. Если я повторяю ошибку, селектор вызывается 3 раза и т. Д. Поэтому каждый раз, когда я повторяю ошибку, все больше и больше wvc нажимаются друг на друга в UINavigationController.
Возможно, эти журналы могут помочь осветить странную последовательность накапливания, которую я вижу. Для каждого сообщения уведомления APIClient я получаю все большее число pushViewController: wvc, а не только 1 push.
Logging in...
APIClient Posting notifcation for sessionArrived
lvc Calling toPagebookWorkspace for session lvcke2. Opening PagebookWorkspace view.
Pressed back on nav bar, calling viewWillDisappear
Logging in...
APIClient Posting notifcation for sessionArrived
lvc Calling toPagebookWorkspace for session lvcke2. Opening PagebookWorkspace view.
lvc Calling toPagebookWorkspace for session lvcke2. Opening PagebookWorkspace view.
nested push animation can result in corrupted navigation bar
Finishing up a navigation transition in an unexpected state. Navigation Bar subview tree might get corrupted.
Unbalanced calls to begin/end appearance transitions for <CWWorkspaceVCViewController: 0x8067410>.
Pressed back on nav bar, calling viewWillDisappear
Pressed back on nav bar, calling viewWillDisappear
Logging in...
APIClient Posting notifcation for sessionArrived
lvc Calling toPagebookWorkspace for session lvcke2. Opening PagebookWorkspace view.
lvc Calling toPagebookWorkspace for session lvcke2. Opening PagebookWorkspace view.
nested push animation can result in corrupted navigation bar
lvc Calling toPagebookWorkspace for session lvcke2. Opening PagebookWorkspace view.
nested push animation can result in corrupted navigation bar
Finishing up a navigation transition in an unexpected state. Navigation Bar subview tree might get corrupted.
Finishing up a navigation transition in an unexpected state. Navigation Bar subview tree might get corrupted.
Unbalanced calls to begin/end appearance transitions for <CWWorkspaceVCViewController: 0x8068330>.
Pressed back on nav bar, calling viewWillDisappear
Pressed back on nav bar, calling viewWillDisappear
Pressed back on nav bar, calling viewWillDisappear
Logging in...
APIClient Posting notifcation for sessionArrived
lvc Calling toPagebookWorkspace for session lvcke2. Opening PagebookWorkspace view.
lvc Calling toPagebookWorkspace for session lvcke2. Opening PagebookWorkspace view.
nested push animation can result in corrupted navigation bar
lvc Calling toPagebookWorkspace for session lvcke2. Opening PagebookWorkspace view.
nested push animation can result in corrupted navigation bar
lvc Calling toPagebookWorkspace for session lvcke2. Opening PagebookWorkspace view.
nested push animation can result in corrupted navigation bar
Finishing up a navigation transition in an unexpected state. Navigation Bar subview tree might get corrupted.
Finishing up a navigation transition in an unexpected state. Navigation Bar subview tree might get corrupted.
Finishing up a navigation transition in an unexpected state. Navigation Bar subview tree might get corrupted.
Unbalanced calls to begin/end appearance transitions for <CWWorkspaceVCViewController: 0x7257930>.
Pressed back on nav bar, calling viewWillDisappear
Pressed back on nav bar, calling viewWillDisappear
Pressed back on nav bar, calling viewWillDisappear
Pressed back on nav bar, calling viewWillDisappear
Если у вас есть какие-либо идеи о том, что случилось, благодарим вас за помощь.
Попробуйте выйти из системы, когда вы добавите наблюдателя, и сделайте уверен, что он не добавляется несколько раз. – danielbeard
Хорошо, но зачем мне туда выходить? Это точно в момент, когда пользователь успешно вошел в систему. Вся цель наблюдателя заключается в том, чтобы поймать, когда сервер ответил проверенными учетными данными. – roro
У меня есть еще один наблюдатель чуть ниже, но это слушает что-то другое: [центр addObserver: самостоятельно селектор: @selector (noWifiUserNotification) Имя: @ «failedRequestGeneral» объекта: клиент]; – roro