W systemie iOS 8.0 firma Apple wprowadziła UIAlertController, aby zastąpić UIActionSheet . Niestety, Apple nie dodał żadnych informacji, jak to przedstawić. Znalazłem wpis na ten temat na blogu hayaGeek, jednak wydaje się, że nie działa na iPadzie. Widok jest całkowicie niewłaściwy:
Niewłaściwie umieszczone:
Poprawny:
Używam następującego kodu, aby pokazać go w interfejsie:
let alert = UIAlertController()
// setting buttons
self.presentModalViewController(alert, animated: true)
Czy istnieje inny sposób dodania go do iPada? A może Apple po prostu zapomniało iPada lub nie zostało jeszcze zaimplementowane?
ios
ipad
user-interface
uialertcontroller
Matt3o12
źródło
źródło
Na iPadzie alert będzie wyświetlany jako popover przy użyciu nowego UIPopoverPresentationController , wymaga podania punktu kotwiczenia dla prezentacji popover przy użyciu sourceView i sourceRect lub barButtonItem
Aby określić punkt kontrolny, musisz uzyskać odwołanie do UIPopoverPresentationController UIAlertController i ustawić jedną z właściwości w następujący sposób:
przykładowy kod:
źródło
W Swift 2 chcesz zrobić coś takiego, aby poprawnie pokazać to na iPhonie i iPadzie:
Jeśli nie ustawisz prezentera, na iPadzie pojawi się wyjątek
-[UIPopoverPresentationController presentationTransitionWillBegin]
z następującym komunikatem:źródło
Aktualizacja do wersji Swift 3.0 i nowszej
źródło
Aktualizacja 2018
Właśnie z tego powodu odrzuciłem aplikację, a bardzo szybkim rozwiązaniem było po prostu przejście z użycia arkusza akcji na alert.
Działał urok i zdał testy testerów App Store.
To może nie być odpowiednia odpowiedź dla wszystkich, ale mam nadzieję, że pomoże to niektórym z was szybko wyjść z zalewy.
źródło
Swift 4 i wyżej
Utworzyłem rozszerzenie
Jak używać:
źródło
Oto szybkie rozwiązanie:
źródło
Szybki 5
Użyłem stylu „arkusz działań” dla iPhone'a i „alert” dla iPada. iPad wyświetla się na środku ekranu. Nie trzeba określać sourceView ani zakotwiczać widoku w dowolnym miejscu.
Edycja: Zgodnie z sugestią ShareToD, zaktualizowano przestarzałe „UI_USER_INTERFACE_IDIOM () == UIUserInterfaceIdiom.pad”
źródło
Dla mnie musiałem tylko dodać:
źródło
Po prostu dodaj następujący kod przed zaprezentowaniem swojego arkusza akcji:
źródło