2014-02-01 3 views
1

Я пытаюсь использовать все виды NSNotificationCenter, но никто из них не работает. У меня есть UITableViewController, когда пользователь нажимает на ячейку, он открывает UIViewController, в котором размещается WebView. Просто, чтобы заставить мяч катиться, я пытаюсь, чтобы UITableViewController зарегистрировал сообщение, что оно получило уведомление, когда UIViewController с WebView загружается. Вот что у меня есть:NSNotificationCenter не работает ios 7

В MyTableViewController -

- (id)initWithStyle:(UITableViewStyle)style 
{ 
self = [super initWithStyle:style]; 
if (self) { 

    [[NSNotificationCenter defaultCenter] addObserver:self 
              selector:@selector(receiveTestNotification:) 
               name:@"TestNotification" 
               object:nil]; 
} 
return self; 
} 


- (void) receiveTestNotification:(NSNotification *) notification 
{ 

if ([[notification name] isEqualToString:@"TestNotification"]) { 
    NSLog (@"Successfully received the test notification!"); 
} 

} 

- (void) dealloc 
{ 

[[NSNotificationCenter defaultCenter] removeObserver:self]; 
} 

Тогда в моем UIViewController, который имеет WebView в нем, у меня есть -

- (void)viewDidLoad 
{ 
[super viewDidLoad]; 

[[NSNotificationCenter defaultCenter] 
postNotificationName:@"TestNotification" 
object:self]; 

.... 
} 

Когда я бегу и прикоснуться к ячейке в UITableViewController чтобы открыть UIViewController с помощью WebView, нет сообщения журнала. Никакой аварии, ничего. Что дает?

Любая помощь очень ценится.

EDIT

- (id)initWithCoder:(NSCoder *)aDecoder 
{ 

self = [super initWithCoder:aDecoder]; 
if (self) 
{ 
    [[NSNotificationCenter defaultCenter] addObserver:self 
              selector:@selector(receiveTestNotification:) 
               name:@"TestNotification:" 
               object:nil]; 
} 

return self; 
} 
+0

Ваш код выглядит нормально для меня. Добавьте точку останова в 'receiveTestNotification' и посмотрите, вызвана ли она. – trojanfoe

+0

не вызывается. Используется точка останова и базовый журнал при запуске метода. – A2345sooted

+0

Теперь попробуйте создать один экземпляр имени уведомления и ссылаться на него вместо строкового литерала. – trojanfoe

ответ

3

Если вы используете Interface Builder затем initWithStyle: обыкновение называться как ваш инициализаторе, вместо того, чтобы переопределить initWithCoder:

+0

Я использую раскадровку – A2345sooted

+0

@ A2345отсортирован, что будет делать то же самое, переопределить initWithCoder: вместо – SomeGuy

+2

Я ленивый - я бы зарегистрируйтесь для уведомлений в awakeFromNib. Или, что еще лучше, viewDidLoad. – Abizern

Смежные вопросы