In meinem iPad App aufgerufen wird, in einer Klasse-I-Register für eine Meldung:NSNotificationCenter Wähler nicht
NSNotificationCenter *nc = [NSNotificationCenter defaultCenter];
[nc addObserver:self selector:@selector(selectedList:) name:@"TTSelectedList" object:nil];
Meine selectedList:
Methode sieht wie folgt aus:
- (void)selectedList:(NSNotification*)notification
{
NSLog(@"received notification");
}
Dann in einer anderen Klasse (a UITableViewController
) Ich poste diese Benachrichtigung, wenn eine Zeile ausgewählt ist:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
NSLog(@"posting notification");
[[NSNotificationCenter defaultCenter] postNotificationName:@"TTSelectedList" object:nil];
}
Ich kann bestätigen, dass die Benachrichtigung gepostet wird, da die "Benachrichtigungsbenachrichtigung" in der Konsole protokolliert wird, aber "Benachrichtigung erhalten" nie aufgerufen wird, was bedeutet, dass die Benachrichtigung nicht empfangen wird und der Selektor nicht aufgerufen wurde. Ich kann nicht herausfinden, was das verursacht.
Dank
Etwas dumm, aber was mich für eine Weile verwirrt. Ich hatte das gleiche Problem. In meinem Fall habe ich nicht bemerkt, dass eine Unterklasse eine Methode mit demselben Selektor wie der, den ich in der Elternklasse deklarieren wollte, hatte. –
Hatte ich selbst, auch etwas blöd: Ich habe eine Benachrichtigung mit einem Kleinbuchstaben anstelle eines Großbuchstabens gepostet. Sie sind Groß-und Kleinschreibung! –