2013-05-08 3 views
0

В настоящее время у меня есть основной вид и вид входа. Я обрабатываю аутентификацию в своем браузере (javascript injection и web scraping), а затем загружаю основное представление с нужным контентом. Проблема в том, что я хочу отобразить кнопку выхода на основной экран. Я хочу, чтобы он отправил запрос url загрузки в uiwebview в loginview (logout url). Я хочу сделать это без отображения loginview. Это возможно?Выполнение запроса WebView в другом представлении при отображении другого вида?

Спасибо!

Это то, что я делаю в моем LoginView:

- (void)webViewDidFinishLoad:(UIWebView *) webView { 


    if ([[NSURL URLWithString:@"https://arandomservice.com/signin"] isEqual:[NSURL URLWithString:[WebView stringByEvaluatingJavaScriptFromString: @"document.URL"]]]) { 

     NSLog(@"Authentication Successful"); 

     //Save Username 
     NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
     [defaults setObject:usernameField.text forKey:@"username"]; 
     [defaults synchronize]; 

     //Save Password 
     [defaults setObject:passwordField.text forKey:@"password"]; 
     [defaults synchronize]; 

     //Close Login Screen 
     [self dismissViewControllerAnimated:YES completion:NULL]; 
    } 

    else { 

     NSLog(@"Authentication Failed."); 
    } 


} 

Теперь позже, когда я хочу, чтобы пользователь выйти я хочу, чтобы они попали UIButton в другой точке зрения, что бы сделать следующее:

NSURL *signInUrl = [NSURL URLWithString:@"https://arandomservice.com/logout"]; 
    [self loadURL:nil withURL:signInUrl]; 

Я хочу, чтобы отправить это на вход в систему. Какой был бы лучший способ сделать это? (PS Имейте в виду, что позже я буду использовать брелок вместо NSuserdefaults).

ответ

0

Да Offcourse возможно вы можете сделать с помощью NSNotification посмотреть, как

1) Установить Уведомление

//write this line of code at where you created `LoginView(loginview)` 
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(logOut) name:@"kLogoutButtonClicked" object:nil]; 

- (void)logOut:(NSNotification*)notification{ 

    NSURL * signInUrl = (NSURL*)[notification object]; 
    //now use this URL further 
    //here write you javaScript and inject it to the Webview 

    } 

2) Сообщение Уведомление

//as you clicked logOut button in otherView just write below line of code this line of code broadcast notification to each observer and don't forget to remove this observer as doen with it in any right place like `dealloc`. 

[[NSNotificationCenter defaultCenter] postNotificationName:@"kLogoutButtonClicked" object:herePassWhatYouwant]; 

// в вашем случае передать URL-адрес этому объекту

Надеюсь, это поможет вам.

+0

Спасибо за ответ Kamarshad! Итак, для шага 1 вы бы сказали, что введите первую строку в viewDidLoad моего loginView или моего webViewDidStartLoad? – KingPolygon

+0

@ user1886754 да, вы должны, но дайте мне знать, существует ли 'loginview' в памяти? – Kamarshad

+0

Каждый контроллер вида. LoginViewController - это модальный вид. Я смущен. поэтому сообщение «Сообщение» должно войти в мой логин или мой основной вид? – KingPolygon

Смежные вопросы