Ich habe nächsten Code:removeObserver nicht funktioniert
@implementation SplashViewVC
- (void)viewDidLoad
{
[super viewDidLoad];
self.splashView.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"Default.png"]];
self.activityIndicator.originY = 355.f;
[[NSNotificationCenter defaultCenter] addObserverForName:NCDownloadComplete object:nil queue:[NSOperationQueue mainQueue] usingBlock:^(NSNotification *n){
NSInteger errorCode = [n.userInfo[@"errorCode"] integerValue];
[self.activityIndicator stopAnimating];
if (errorCode == ERROR_CODE_NO_CONNECTION) {
UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Error" message:@"Some problem with server" delegate:self cancelButtonTitle:@"try again" otherButtonTitles:nil];
[alertView show];
} else if (errorCode == 0) {
[self dismissViewControllerAnimated:YES completion:nil];
}
}];
[self downloadData];
}
- (void)downloadData
{
[self.activityIndicator startAnimating];
[[Server sharedServer] getMovieData];
}
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
[self downloadData];
}
- (void)viewDidDisappear:(BOOL)animated
{
[[NSNotificationCenter defaultCenter] removeObserver:self];
[super viewDidDisappear:animated];
}
@end
Also habe ich Haltepunkte in der viewDidLoad
Methode beginnen, in viewDidDisappear
. Wenn ich eine App starte, die zuerst zu viewDidload
geht, gehe ich nach dem Download zu viewDidDisappear
.
Aber während meiner App ich wieder Daten herunterladen und notification: NSDownloadComplete
. Und in diesem VC ist es Arbeit, aber ich entfernte später mit:
[[NSNotificationCenter defaultCenter] removeObserver:self]
Diese VC-Nutzung viewDidLoad
einmal am Anfang & kann nicht wieder addObserver.
Was ist los?
EDIT Ich versuche setzen addObserver Methode viewWillAppear
oder viewWillDisappear
- ohne Ergebnisse. ich hinzufügen NSLog(@"addObserver");
vor
[[NSNotificationCenter defaultCenter] addObserverForName...
in viewDidLoad
und schreiben
- (void)viewDidDisappear:(BOOL)animated
{
NSLog(@"removeObserver");
[[NSNotificationCenter defaultCenter] removeObserver:self];
[super viewDidDisappear:animated];
}
In log ich sehe:
2013-06-10 14:32:05.646 myApp[9390:c07] addObserver
2013-06-10 14:32:06.780 myApp[9390:c07] removeObserver
was falsch?
EDIT 2 Sie, dass Beobachter entfernt werden sehen müssen, aber es wieder Block in addObserver Verfahren laufen
Ist das Code copy & geklebt? Ich frage mich nur, weil Ihre 'viewDidLoad' nur 3 Zeilen lang ist und danach gibt es Anweisungen, die in keiner Methode enthalten sind. Das ist nicht valide;) – HAS
@HAS alle funktionieren gut, bis auf meine Frage =) – user2213271
Sorry, aber das ist nicht;) Die geschweifte Klammer nach 'self.activityIndicator.originY = 355.f;' ist falsch. Entfernen Sie und Sie werden gültigen Code haben;) – HAS