¿Puedo ver una NSNotification de otra class?

Estoy tratando de centrarme en NSNotificationCenter. Si tengo algo como esto en mi Delegado de aplicaciones:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(something:) name:@"something" object:nil]; ----- -(void)something:(NSNotification *) notification { // do something } 

¿Puedo ver esto de alguna manera en otro controller de vista? En mi caso, me gustaría verlo en un controller de vista con una tabla, y luego volver a cargar la tabla cuando se recibe una notificación. es posible?

Sí, ese es el objective general de NSNotification , solo tiene que agregar el View Controller que desea como un observador exactamente de la misma manera que lo hizo en su App Delegate, y recibirá la notificación.

Puede encontrar más información aquí: Progtwigción de notifications

Sí, puedes hacerlo así:

En class A: publicar la notificación

  [[NSNotificationCenter defaultCenter] postNotficationName:@"DataUpdated "object:self]; 

En la class B: regístrese primero para la notificación y escriba un método para manejarlo. Da el selector correspondiente al método.

 //view did load [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleUpdatedData:) name:@"DataUpdated" object:nil]; -(void)handleUpdatedData:(NSNotification *)notification { NSLog(@"recieved"); } 

Por supuesto que es posible, ese es el punto completo de las notifications. Uso de addObserver:selector:name:object: es la forma en que se registra para recibir notifications (debe hacer esto en su controller de vista de tabla), y puede usar postNotificationName:object:userInfo: para publicar una notificación de cualquier class.

Lea los temas de progtwigción de Notofication para get más información.

Puede registrarse para observar notifications en tantas classs como desee. Simplemente necesitas "enjuagar y repetir". Incluya el código para registrarse como un observador en su controller de vista (quizás en viewWillAppear 🙂 y luego vuelva a cargar el tableView desde su método:

 - (void)viewWillAppear:(BOOL)animated { [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(something:) name:@"something" object:nil]; } -(void)something:(NSNotification *) notification { [self.tableView reloadData]; } 

También es una buena idea cancelar el logging del controller de vista una vez que ya no necesite las notifications:

 - (void)viewWillDisappear:(BOOL)animated { [[NSNotificationCenter defaultCenter] removeObserver:self]; } 

Debería agregar eso como un Observer y dar un método de selector diferente si desea que viewController comporte de manera diferente cuando se publique esa notificación.

 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(somethingOtherThing:) name:@"something" object:nil]; -(void)somethingOtherThing:(NSNotification *) notification { // do something }