2013-05-08 5 views
-1

В настоящее время я пытаюсь заставить NSNotification работать, но у меня проблемы.Получение NSNotification для работы?

У меня есть два (2) ViewControllers: A. MainViewController & B. LoginViewController.

В моем MainViewController У меня есть кнопка выхода, которая отправит URL-адрес моему LoginViewController для его загрузки (без отображения моего loginView). Однако он не работает.

В моей MainViewController это то, что у меня есть:

- (IBAction)logout:(id)sender { 

NSURL *logoutURL = [NSURL URLWithString:@"https://myurl.com/logout"]; 

[[NSNotificationCenter defaultCenter] postNotificationName:@"logoutInitiated" object:logoutURL]; 


} 

Это то, что у меня в LoginViewController:

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view. 

    WebView.delegate = self; 
    WebView.scalesPageToFit = YES; 
    WebView.multipleTouchEnabled = YES; 
    loadCount = 0; 

    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(submitLogout) name:@"logoutInitiated" object:nil]; 

} 

- (IBAction)submitLogout:(NSNotification*)notification { 


    [WebView stopLoading]; 

    NSURL * signOutUrl = (NSURL*)[notification object]; 
    [self loadURL:nil withURL:signOutUrl]; 
} 

Моя проблема заключается в том, что, когда я нажимаю logoutButton ничего не происходит. (Используя NSLogs, я вижу, что он никогда не запускает следующий шаг) Спасибо !!!!

ответ

1

Это потому, что имя вашего метода, которое вы передаете в селекторе, неверно. Вам нужно добавить двоеточия: в submitLogout: суффиксе Использования

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(submitLogout:) name:@"logoutInitiated" object:nil]; 

вместо

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(submitLogout) name:@"logoutInitiated" object:nil]; 

Надеется, что это помогает.

+0

WOW я, вероятно, немного отдохнуть! Не могу поверить, что я этого не понимал! Огромное спасибо!!! – KingPolygon

0

Когда вы добавляете себя в качестве наблюдателя, вы используете селектор «submitLogout» без точки с запятой! Но ваш метод имеет аргумент, поэтому правильный селектор будет @selector(submitLogout:).

0

Обратите внимание на SEMICOLON

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(**submitLogout:**) name:@"logoutInitiated" object:nil];  

- (IBAction)logout:(id)sender 
{ 
     NSURL *logoutURL = [NSURL URLWithString:@"https://myurl.com/logout"];  
     [[NSNotificationCenter defaultCenter] postNotificationName:@"logoutInitiated" object:nil  userInfo:[NSDictionary dictionaryWithObjectsAndKeys:logoutURL,@"RECEIVED_URL", nil]]; 
} 

- (IBAction)submitLogout:(NSNotification*)notification 
{  
    [WebView stopLoading]; 
    NSURL * signOutUrl = (NSURL*)[notification objectForKey:@"RECEIVED_URL"]; 
    [self loadURL:nil withURL:signOutUrl]; 
} 
Смежные вопросы