У меня есть UIViewController
с кнопкой, которая приносит еще UIViewController
. нажав на кнопку, как показано на моем NSLog
, и когда это будет сделано, я хочу отправить уведомление для загрузки еще одного viewcontroller
. Ну, хотя кажется, все сделано правильно, так или иначе это не работает, и UIViewController
не появляется. Вот код:Проблемы с NSNotificationCenter и загрузка UIViewControlletr
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(infoPage:)
name:@"InfoPage" object:nil ];
-(void) infoPage:(NSNotification*)notification
{
NSLog(@"Code executing in Thread %@",[NSThread currentThread]);
InfoCtrol *i = [[InfoCtrol alloc] init];
i.hidesBottomBarWhenPushed = YES;
[self.navigationController pushViewController:i animated:YES];
}
моя кнопка tabbaritem
-(void)info {
[[NSNotificationCenter defaultCenter] postNotificationName:@"InfoPage"
object:nil
userInfo:nil];
NSLog(@"test not");
}
Я думаю, что моя проблема в том, что: Это не в mainThread, но я не знаю, как я должен решить, что:
Я также использовал это, но это не принесло UIViewController:
[self performSelectorOnMainThread:@selector(test) withObject:nil waitUntilDone:NO];
-(void)test{
[[NSNotificationCenter defaultCenter] postNotificationName:@"InfoPage"
object:nil
userInfo:nil];
}
Если я просто поместить этот код в кнопку, он отображает UIViewController
, но я хочу использовать NSNotificationCenter
InfoCtrol *i = [[InfoCtrol alloc] init];
i.hidesBottomBarWhenPushed = YES;
[self.navigationController pushViewController:i animated:YES];
Мой Журнал:
Code executing in Thread <NSThread: 0x1fd7c7e0>{name = (null), num = 1}
Update:
How should i remove last thread from mainThread
Всех UIKit вещи происходят на главном поток, и вы должны намеренно перейти к другому потоку, используя, например, Grand Central Dispatch, так что маловероятно, что проблема с другим вопросом. Существует метод класса в 'NSThread', называемый' isMainThread', который вы могли бы использовать для проверки. – MaxGabriel
Какие контроллеры являются этими фрагментами кода? Вы должны описать, какие контроллеры у вас есть и где находится весь этот код. – rdelmar
убедитесь, что 'self.navigationController' не' nil' –