Odpowiedzi:
Tak, UIAlertView
prawdopodobnie jest to, czego szukasz. Oto przykład:
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"No network connection"
message:@"You must be connected to the internet to use this app."
delegate:nil
cancelButtonTitle:@"OK"
otherButtonTitles:nil];
[alert show];
[alert release];
Jeśli chcesz zrobić coś bardziej fantazyjnego, powiedzmy, wyświetl w swoim interfejsie użytkownika niestandardowy interfejs użytkownika UIAlertView
, możesz podklasę UIAlertView
i wstawić niestandardowe składniki interfejsu użytkownika w init
metodzie. Jeśli chcesz odpowiedzieć na naciśnięcie przycisku po UIAlertView
pojawieniu się znaku, możesz ustawić delegate
powyższe i zastosować - (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
metodę.
Możesz także spojrzeć na UIActionSheet
.
Różni ludzie, którzy przychodzą na to pytanie, oznaczają różne rzeczy za pomocą wyskakującego okienka. Bardzo polecam przeczytanie dokumentacji widoków tymczasowych . Moja odpowiedź jest w dużej mierze streszczeniem tej i innych powiązanych dokumentów.
Alerty wyświetlają tytuł i opcjonalny komunikat. Użytkownik musi to potwierdzić (alert za pomocą jednego przycisku) lub dokonać prostego wyboru (alert za pomocą jednego przycisku) przed kontynuowaniem. Tworzysz alert za pomocą UIAlertController
.
Warto zacytować ostrzeżenia i porady dokumentacji dotyczące tworzenia niepotrzebnych alertów.
Uwagi:
UIAlertView
był przestarzały. Powinieneś teraz użyć UIAlertController
do tworzenia alertów.Arkusze akcji dają użytkownikowi listę opcji do wyboru. Pojawiają się na dole ekranu lub w oknie pop-up, w zależności od wielkości i orientacji urządzenia. Podobnie jak w przypadku alertów, a UIAlertController
służy do tworzenia arkusza akcji. Przed iOS 8 UIActionSheet
był używany, ale teraz dokumentacja mówi:
Ważne:
UIActionSheet
jest przestarzałe w iOS 8. (zauważ, żeUIActionSheetDelegate
jest również przestarzała.) Do tworzenia i zarządzania arkusze działania w iOS 8 i później, zamiast korzystaćUIAlertController
zpreferredStyle
oUIAlertControllerStyleActionSheet
.
Modalne widok jest samowystarczalny pogląd, że ma wszystko, co potrzebne do wykonania zadania. Może, ale nie musi zajmować całego ekranu. Aby utworzyć widok modalny, użyj UIPresentationController
z jednym ze stylów prezentacji modalnej .
Zobacz też
Popover to widok, który pojawia się, gdy kranów użytkownika na coś i znika, gdy dotykając poza nim. Ma strzałkę pokazującą element sterujący lub lokalizację, z której wykonano dotknięcie. Treść może zawierać wszystko, co można umieścić w kontrolerze widoku. Robisz popover za pomocą UIPopoverPresentationController
. (Przed iOS 8 UIPopoverController
była zalecaną metodą).
W przeszłości pop-upy były dostępne tylko na iPadzie, ale poczynając od iOS 8, można je również uzyskać na iPhonie (patrz tutaj , tutaj i tutaj ).
Zobacz też
Powiadomienia to dźwięki / wibracje, alerty / banery lub znaczki, które powiadamiają użytkownika o czymś, nawet gdy aplikacja nie jest uruchomiona na pierwszym planie.
Zobacz też
W systemie Android Toast to krótki komunikat, który wyświetla się na ekranie przez krótki czas, a następnie znika automatycznie, nie zakłócając interakcji użytkownika z aplikacją.
Ludzie pochodzący z systemu Android chcą wiedzieć, co to jest wersja Toast na iOS. Niektóre przykłady tych pytań można znaleźć tutaj , tutaj , tutaj i tutaj . Odpowiedź jest taka, że w iOS nie ma odpowiednika Toast . Różne przedstawione obejścia obejmują:
UIView
Jednak radzę trzymać się standardowych opcji interfejsu użytkownika, które są już dostarczane z iOS. Nie staraj się, aby Twoja aplikacja wyglądała i zachowywała się dokładnie tak samo jak wersja na Androida. Zastanów się, jak go ponownie zapakować, aby wyglądał i działał jak aplikacja na iOS.
Od wydania iOS 8 UIAlertView
jest teraz przestarzałe; UIAlertController jest zamiennikiem.
Oto próbka tego, jak to wygląda w Swift:
let alert = UIAlertController(title: "Hello!", message: "Message", preferredStyle: UIAlertControllerStyle.alert)
let alertAction = UIAlertAction(title: "OK!", style: UIAlertActionStyle.default)
{
(UIAlertAction) -> Void in
}
alert.addAction(alertAction)
present(alert, animated: true)
{
() -> Void in
}
Jak widać, interfejs API pozwala nam na implementację wywołań zwrotnych zarówno dla akcji, jak i kiedy prezentujemy alert, co jest całkiem przydatne!
Zaktualizowano dla Swift 4.2
let alert = UIAlertController(title: "Hello!", message: "Message", preferredStyle: UIAlertController.Style.alert)
let alertAction = UIAlertAction(title: "OK!", style: UIAlertAction.Style.default)
{
(UIAlertAction) -> Void in
}
alert.addAction(alertAction)
present(alert, animated: true)
{
() -> Void in
}
Zaktualizowano dla iOS 8.0
Od iOS 8.0 będziesz musiał używać UIAlertController w następujący sposób:
-(void)alertMessage:(NSString*)message
{
UIAlertController* alert = [UIAlertController
alertControllerWithTitle:@"Alert"
message:message
preferredStyle:UIAlertControllerStyleAlert];
UIAlertAction* defaultAction = [UIAlertAction
actionWithTitle:@"OK" style:UIAlertActionStyleDefault
handler:^(UIAlertAction * action) {}];
[alert addAction:defaultAction];
[self presentViewController:alert animated:YES completion:nil];
}
Gdzie self w moim przykładzie to UIViewController, który implementuje metodę „presentViewController” dla wyskakującego okienka.
David
W przypadku Swift 3 i Swift 4:
Ponieważ UIAlertView jest przestarzały, istnieje dobry sposób wyświetlania Alert na Swift 3
let alertController = UIAlertController(title: NSLocalizedString("No network connection",comment:""), message: NSLocalizedString("connected to the internet to use this app.",comment:""), preferredStyle: .alert)
let defaultAction = UIAlertAction(title: NSLocalizedString("Ok", comment: ""), style: .default, handler: { (pAlert) in
//Do whatever you want here
})
alertController.addAction(defaultAction)
self.present(alertController, animated: true, completion: nil)
Przestarzałe:
To jest szybka wersja zainspirowana sprawdzoną odpowiedzią:
Wyświetl AlertView:
let alert = UIAlertView(title: "No network connection",
message: "You must be connected to the internet to use this app.", delegate: nil, cancelButtonTitle: "Ok")
alert.delegate = self
alert.show()
Dodaj delegata do kontrolera widoku:
class AgendaViewController: UIViewController, UIAlertViewDelegate
Gdy użytkownik kliknie przycisk, ten kod zostanie wykonany:
func alertView(alertView: UIAlertView, clickedButtonAtIndex buttonIndex: Int) {
}
Chociaż już napisałem przegląd różnych rodzajów wyskakujących okienek, większość ludzi potrzebuje tylko alertu.
class ViewController: UIViewController {
@IBAction func showAlertButtonTapped(_ sender: UIButton) {
// create the alert
let alert = UIAlertController(title: "My Title", message: "This is my message.", preferredStyle: UIAlertController.Style.alert)
// add an action (button)
alert.addAction(UIAlertAction(title: "OK", style: UIAlertAction.Style.default, handler: nil))
// show the alert
self.present(alert, animated: true, completion: nil)
}
}
Moja pełniejsza odpowiedź jest tutaj .
Oto wersja C # w Xamarin.iOS
var alert = new UIAlertView("Title - Hey!", "Message - Hello iOS!", null, "Ok");
alert.Show();