Enviar nsnotification de clase a classb
-
25-10-2019 - |
Pregunta
Así que tengo una aplicación con una compra en la aplicación. La compra en la aplicación se administra en FirstViewController. Cuando el usuario ha comprado el producto, quiero enviar una notificación a mi mantenimiento MantableViewController para recargar los datos de las tablas y mostrar los nuevos objetos que se compraron en la compra de la aplicación. Básicamente, quiero enviar una notificación de la Clase A a la Clase B y la Clase B vuelve a cargar los datos de TableView. He intentado usar NSNotificationCenter, pero sin éxito, pero sé que es posible con NSNotificationCenter, simplemente no sé cómo.
Solución
En la clase A: publique la notificación
[[NSNotificationCenter defaultCenter] postNotificationName:@"DataUpdated"
object:self];
En la clase 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");
[self.tableView reloadData];
}
Otros consejos
Ok, estoy agregando un poco más de información a la respuesta de Vince
En la clase A: publique la notificación
[[NSNotificationCenter defaultCenter] postNotificationName:@"DataUpdated"
object:arrayOfPurchasedObjects];
En la clase B: Regístrese primero para la notificación y escriba un método para manejarlo.
Da el selector correspondiente al método. Asegúrese de que su clase B esté asignada antes de publicar la notificación que Otrowie Notification no funcionará.
- (void) viewDidLoad {
// view did load
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(handleUpdatedData:)
name:@"DataUpdated"
object:nil];
}
-(void)handleUpdatedData:(NSNotification *)notification {
NSLog(@"recieved");
NSArray *purchased = [notification object];
[classBTableDataSourceArray addObjectsFromArray:purchased];
[self.tableView reloadData];
}
- (void) dealloc {
// view did load
[[NSNotificationCenter defaultCenter] removeObserver:self
name:@"DataUpdated"
object:nil];
[super dealloc];
}
¿Quizás estás tratando de enviar notificaciones desde otro hilo? La nsnotificación no se entregará al observador desde otro hilo.