Я пытаюсь использовать все виды 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;
}
Ваш код выглядит нормально для меня. Добавьте точку останова в 'receiveTestNotification' и посмотрите, вызвана ли она. – trojanfoe
не вызывается. Используется точка останова и базовый журнал при запуске метода. – A2345sooted
Теперь попробуйте создать один экземпляр имени уведомления и ссылаться на него вместо строкового литерала. – trojanfoe