2014-11-20 14 views
7

I wydają się być uruchomione na problem podobny do jednego w nierozwiązanej kwestii pisał: UIAlertController dismissing his presentingViewControlleroddalenie UIAlertController przedstawiony przez kontrolera widoku modalne

przytaczam modalne kontroler widok na szczycie normalnej UIViewController. Następnie pojawia się alert dotyczący tego modalnego kontrolera widoku. Po naciśnięciu "ok", aby odrzucić alert (wygenerowany za pomocą poniższego kodu), kontroler widoku modalnego jest również odrzucany.

UIAlertAction *ok = [UIAlertAction actionWithTitle:@"OK" 
              style:UIAlertActionStyleDefault 
              handler:^(UIAlertAction *action{ 
                [self dismissViewControllerAnimated: YES completion: nil];}]; 

UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"Sign up problem." 
                   message:@"Some fields are empty. Please check your inputs and try again." 
                 preferredStyle:UIAlertControllerStyleAlert]; 
[alert addAction:ok]; 
[self presentViewController:alert animated:YES completion:nil]; 

Jak mogę odrzucić tylko ostrzeżenie?

Zdaję sobie sprawę, że mogę uniknąć tego problemu, używając zamiast tego ustawienia typu kontrolera nawigacyjnego i ukrywając pasek nawigacyjny, więc mam takie samo odczucie jak kontroler widoku modalnego, ale wydaje się to głupie. Dzięki.

Odpowiedz

21

Nie dzwoń pod self dismissViewController w programie obsługi przycisku. Oznacza to, że chcesz, aby kontroler widoku został odrzucony.

Nie musisz usuwać alertu. Automatycznie się odrzuci. Jedyne, co powinieneś zrobić w obsłudze przycisku, to wykonać dowolną akcję. Nic nie rób, jeśli nie musisz nic robić.

Jeśli alarm jest po prostu wiadomość i nie trzeba wykonywać żadnych działań, po prostu to zrobić:

UIAlertAction *ok = [UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault handler:nil]; 
+0

Dziękuję. Bardzo doceniane, a właściwie oba zachowania są przydatne. –

0

Nie musisz w żaden sposób usuwać ani usuwać UIAlertController w programie obsługi przycisku - robi to sam.

Po prostu usuń połączenie z numerem dismissViewControllerAnimated:completion:.

+0

Ale co, jeśli rzeczywiście chcą z określonych powodów. Musi być sposób na programowe odrzucenie go. Na przykład ze starszym '' 'UIAlertView''' można go programowo zamknąć/ukryć. – Supertecnoboff

+0

@Supertechnoboff: Myślę, że możesz po prostu "[self dismissViewControllerAnimated: completion:]'. Nie jestem tego pewien. – Linuxios

Powiązane problemy