Nie można znaleźć jasnego i informacyjnego wyjaśnienia tego.Gdzie znaleźć jasne wyjaśnienie na temat szybkiego alarmu (UIAlertController)?
Odpowiedz
Po wyszukaniu chwilę na obiekcie I nie znaleźć jasne wyjaśnienie, nawet w swojej klasie odniesienia UIAlertController Reference
Jest ok, ale nie wystarczająco jasne dla mnie.
Więc po zebraniu kilku peaces postanowiłem zrobić własny wyjaśnienie (Mam nadzieję, że to pomaga)
Więc tu idzie:
UIAlertView
jest przestarzała jak zauważył: UIAlertView in SwiftUIAlertController
powinien być użyty w iOS8 + , więc aby utworzyć najpierw, musimy go utworzyć, Konstruktor (init) otrzymuje 3 parametry:
2,1 Tytuł: String -> big-pogrubiony tekst wyświetlany na górze okna dialogowego alertu
2,2 komunikatów: String -> mniejszy tekst (dość dużo wyjaśnia to self)
2,3 prefferedStyle:UIAlertControllerStyle
- > zdefiniować styl okno dialogowe, w większości przypadków: UIAlertControllerStyle.Alert
teraz rzeczywiście pokazać go do użytkownika, możemy użyć
showViewController
lubpresentViewController
i przekazać naszą alertu jako parametrAby dodać trochę interakcji z użytkownikiem możemy użyć:
4,1 UIAlertController.addAction
do tworzenia przycisków
4.2 UIAlertController.addTextField
do tworzenia pól tekstowych
Edit uwaga: przykłady kodu poniżej, zaktualizowana do szybkiego składni 3
Przykład 1: Prosty Dialog
@IBAction func alert1(sender: UIButton) {
//simple alert dialog
let alert=UIAlertController(title: "Alert 1", message: "One has won", preferredStyle: UIAlertControllerStyle.alert);
//show it
show(alert, sender: self);
}
Przykład 2: Dialog z jeden tekst wejściowyField & dwa przyciski
@IBAction func alert2(sender: UIButton) {
//Dialog with one input textField & two buttons
let alert=UIAlertController(title: "Alert 2", message: "Two will win too", preferredStyle: UIAlertControllerStyle.alert);
//default input textField (no configuration...)
alert.addTextField(configurationHandler: nil);
//no event handler (just close dialog box)
alert.addAction(UIAlertAction(title: "No", style: UIAlertActionStyle.cancel, handler: nil));
//event handler with closure
alert.addAction(UIAlertAction(title: "Yes", style: UIAlertActionStyle.default, handler: {(action:UIAlertAction) in
let fields = alert.textFields!;
print("Yes we can: "+fields[0].text!);
}));
present(alert, animated: true, completion: nil);
}
Przykład 3: Jeden dostosowane textField wejście & jeden przycisk
@IBAction func alert3(sender: UIButton) {
// one input & one button
let alert=UIAlertController(title: "Alert 3", message: "Three will set me free", preferredStyle: UIAlertControllerStyle.alert);
//configured input textField
var field:UITextField?;// operator ? because it's been initialized later
alert.addTextField(configurationHandler:{(input:UITextField)in
input.placeholder="I am displayed, when there is no value ;-)";
input.clearButtonMode=UITextFieldViewMode.whileEditing;
field=input;//assign to outside variable(for later reference)
});
//alert3 yesHandler -> defined in the same scope with alert, and passed as event handler later
func yesHandler(actionTarget: UIAlertAction){
print("YES -> !!");
//print text from 'field' which refer to relevant input now
print(field!.text!);//operator ! because it's Optional here
}
//event handler with predefined function
alert.addAction(UIAlertAction(title: "Yes", style: UIAlertActionStyle.default, handler: yesHandler));
present(alert, animated: true, completion: nil);
}
nadzieję, że pomoże i powodzenia ;-)
Cieszę się, że podzieliłeś się tym, czego się nauczyłeś !! dziękuję bardzo za wyjaśnienia krok po kroku .. jak myślący;) – swiftBoy
http://iosdevcenters.blogspot.in/2016/03/uialertcontroller-in-swift.html –
Używam Xcode 7.3.1 i testuję na iOS9 . Podczas korzystania z showViewController (alert, sender: self) z pierwszego przykładu z UINavigationController (bez tego ok) zaczynało mnie dziwne zachowanie. Dodaje widok alertu do paska nawigacji. Korzystanie z self.presentViewController (alert, animowany: true, zakończenie: zero) działa poprawnie. – pls
Instancja UIAlertController można przedstawić modally na ekranie, tak jak każdy inny UIViewController przy użyciu presentViewController: animated: completion: method. Co sprawia, że instancja UIAlertController rozróżnia pracę jako ActionSheet lub jako AlertView jest parametrem stylu, który przekazujesz podczas tworzenia.
Nie więcej delegacja
Jeśli używany UIActionSheet lub UIAlertView, wiesz, że sposób, aby uzyskać wywołania zwrotnego z niego jest dla klasy (w większości przypadków ViewController) w celu wdrożenia protokołu UIActionSheetDelegate lub UIAlertViewDelegate. Istnieje kilka projektów open source, które zastąpiły ten schemat delegacji callbackami opartymi na blokach, ale oficjalne interfejsy API nigdy nie były aktualizowane. UIAlertController nie używa delegacji. Zamiast tego ma zbiór elementów UIAlertAction, które używają zamknięć (lub bloków, jeśli używasz Objective-C) do obsługi danych wprowadzanych przez użytkownika.
Na karcie Akcja
@IBAction func showActionSheet(sender: AnyObject) {
//Create the AlertController
let actionSheetController: UIAlertController = UIAlertController(title: "Action Sheet", message: "Swiftly Now! Choose an option!", preferredStyle: .ActionSheet)
//Create and add the Cancel action
let cancelAction: UIAlertAction = UIAlertAction(title: "Cancel", style: .Cancel) { action -> Void in
//Just dismiss the action sheet
}
actionSheetController.addAction(cancelAction)
//Create and add first option action
let takePictureAction: UIAlertAction = UIAlertAction(title: "Take Picture", style: .Default) { action -> Void in
//Code for launching the camera goes here
}
actionSheetController.addAction(takePictureAction)
//Create and add a second option action
let choosePictureAction: UIAlertAction = UIAlertAction(title: "Choose From Camera Roll", style: .Default) { action -> Void in
//Code for picking from camera roll goes here
}
actionSheetController.addAction(choosePictureAction)
//Present the AlertController
self.presentViewController(actionSheetController, animated: true, completion: nil)
}
Dla AlertView z pola tekstowego
@IBAction func showAlert(sender: AnyObject) {
//Create the AlertController
let actionSheetController: UIAlertController = UIAlertController(title: "Alert", message: "Swiftly Now! Choose an option!", preferredStyle: .Alert)
//Create and add the Cancel action
let cancelAction: UIAlertAction = UIAlertAction(title: "Cancel", style: .Cancel) { action -> Void in
//Do some stuff
}
actionSheetController.addAction(cancelAction)
//Create and an option action
let nextAction: UIAlertAction = UIAlertAction(title: "Next", style: .Default) { action -> Void in
//Do some other stuff
}
actionSheetController.addAction(nextAction)
//Add a text field
actionSheetController.addTextFieldWithConfigurationHandler { textField -> Void in
//TextField configuration
textField.textColor = UIColor.blueColor()
}
//Present the AlertController
self.presentViewController(actionSheetController, animated: true, completion: nil)
}
Dziękuję za wkład, nawet ja już odpowiedziałem to pół roku temu. Nadal jest to bardzo dobra odpowiedź, więc z przyjemnością głosowałem ;-) BTW, możesz również pokazać alert za pomocą metody showViewController - mniej elastyczny, ale sensowny, gdy ukończenie nie jest potrzebne –
Czy wyświetlenie alertu wymaga tak dużego czytania? NIE. – chrisl08
Niektóre składni zmieniła się od oryginalnych odpowiedzi. Oto przykładowy kod, który ostrzega użytkownika, jeśli nie jest zalogowany do usługi iCloud.
CKContainer.default().accountStatus { (accountStatus, error) in
switch accountStatus {
case .available:
print("iCloud Available")
case .noAccount:
print("No iCloud account")
//simple alert dialog
let alert=UIAlertController(title: "Sign in to iCloud", message: "This application requires iClound. Sign in to your iCloud account to write records. On the Home screen, launch Settings, tap iCloud, and enter your Apple ID. Turn iCloud Drive on. If you don't have an iCloud account, tap Create a new Apple ID", preferredStyle: UIAlertControllerStyle.alert);
//no event handler (just close dialog box)
alert.addAction(UIAlertAction(title: "Cancel", style: UIAlertActionStyle.cancel, handler: nil));
//show it
self.present(alert, animated: true, completion: nil)
case .restricted:
print("iCloud restricted")
case .couldNotDetermine:
print("Unable to determine iCloud status")
}
}
- 1. Gdzie mogę przeczytać jasne wyjaśnienie POE (Perl Object Environment)?
- 2. Algorytm szybkiego wyboru - uproszczone wyjaśnienie
- 3. Dobre wyjaśnienie/dokumentacja na temat ftrace
- 4. Gdzie znaleźć informacje na temat http://www.alibaba.com api po angielsku?
- 5. Gdzie mogę znaleźć informacje na temat C++ [[przestarzałe]] atrybut
- 6. Gdzie mogę znaleźć samouczek na wysokim poziomie na temat projektowania gier na iPhone'a?
- 7. Symfony2 doktryna jasne cache
- 8. Gdzie znajdę wyjaśnienie wszystkich pól macierzy transformacji?
- 9. Gdzie jest dokumentacja na temat tagów Pandy "Freq"?
- 10. Gdzie mogę znaleźć informacje na temat tworzenia wtyczek dla SQL Server Management Studio?
- 11. Co to jest biblioteka JCF i gdzie mogę znaleźć dokumentację na jej temat?
- 12. Gdzie mogę znaleźć informacje na temat integracji aplikacji Java z menu wskaźnika aplikacji Ubuntu?
- 13. Gdzie mogę znaleźć więcej informacji na temat wzorca Enablera, spopularyzowanego przez Kena Auera?
- 14. Algorytm Chaitin-Briggs wyjaśnienie
- 15. Gdzie są dobre tutoriale na temat pisania niestandardowego dostawcy LINQ?
- 16. Nie można znaleźć danych na temat Kibana 5
- 17. Gdzie mogę znaleźć dobrą dokumentację na OpenXML
- 18. Gdzie mogę znaleźć TableDiff.exe?
- 19. Gdzie mogę znaleźć Microsoft.Build.Utilities.v3.5
- 20. Gdzie mogę znaleźć "j_security_check"?
- 21. C: wyjaśnienie na jednostki tłumaczeniowej
- 22. Gdzie znaleźć struct _IO_FILE
- 23. Gdzie znaleźć CabWiz.exe
- 24. pokaż UIAlertController poza ViewController
- 25. płótno jasne, z alfa
- 26. Gdzie mogę znaleźć GACUtil?
- 27. Na System.out, wyjaśnienie potrzebne
- 28. gdzie mogę znaleźć dobry przykład/wyjaśnienie dotyczące operacji podziału w algebrze relacyjnej?
- 29. Czy ktoś może podać jasne wyjaśnienie, dlaczego Google Guice jest przydatny?
- 30. UISearchBar jasne tło
sformatować przepełnienie stosu wymaga pytanie. Jeśli chcesz odpowiedzieć na własne pytanie, możesz, ale najpierw musisz zadać pytanie. Zmień swój wpis w formie pytania, na które próbujesz znaleźć odpowiedź, a następnie przenieś powyższy wpis do odpowiedzi. – vacawama
Możesz użyć kontrolera "UIAlertController" zarówno dla alertu, jak i arkusza akcji. Przykłady to najłatwiejszy sposób zrozumienia działania. Oto [przykład alertu] (https://stackoverflow.com/a/33340757/3681880) i tutaj jest [przykład arkusza czynności] (https://stackoverflow.com/a/32991999/3681880). – Suragch