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.

¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top