Pracowałem nad stworzeniem UIAlertView w Swift, ale z jakiegoś powodu nie mogę poprawnie wyciągnąć instrukcji, ponieważ otrzymuję ten błąd:
Nie można znaleźć przeciążenia dla parametru „init”, które akceptuje podane argumenty
Oto jak to napisałem:
let button2Alert: UIAlertView = UIAlertView(title: "Title", message: "message",
delegate: self, cancelButtonTitle: "OK", otherButtonTitles: nil)
Aby to nazwać, używam:
button2Alert.show()
W tej chwili ulega awarii i po prostu wydaje mi się, że nie mam poprawnej składni.
ios
swift
cocoa-touch
uialertview
uialertcontroller
BlueBear
źródło
źródło
UIAlertView
iUIActionSheet
został zastąpiony przezUIAlertController
w iOS 8, czy już na to spojrzałeś?self
należąca do przyjmuje protokółUIAlertViewDelegate
(zalecanym sposobem na to, w Swift, jest rozszerzenie).Odpowiedzi:
Z
UIAlertView
klasy:W systemie iOS 8 możesz to zrobić:
Teraz
UIAlertController
jest pojedyncza klasa do tworzenia i interakcji z tym, co wiemy, jakUIAlertView
siUIActionSheet
y na iOS 8.Edycja: Aby obsłużyć działania:
Edycja dla Swift 3:
Edycja dla Swift 4.x:
źródło
UIAlertView
klasę, a komentarz znajduje się bezpośrednio nad deklaracją klasy..Default
?Jeden przycisk
Dwa przyciski
Trzy przyciski
Obsługa zaworów przycisków
handler
Byłnil
w powyższych przykładach. Można wymienićnil
z zamknięciem coś zrobić, gdy użytkownik kliknie przycisk. Na przykład:Notatki
UIAlertAction.Style
typów. Wszyscy mogą być.default
.źródło
Możesz utworzyć UIAlert za pomocą standardowego konstruktora, ale ten „starszy” wydaje się nie działać:
źródło
W Swift 4.2 i Xcode 10
Metoda 1:
PROSTY ALERT
Metoda 2:
ALERT Z AKCJĄ UDOSTĘPNIONĄ
Jeśli chcesz Współdzielony styl klasy (napisz raz, użyj gdziekolwiek)
Teraz zadzwoń w ten sposób do każdego produktu
Metoda 3:
OBECNY ALERT NA GÓRĘ WSZYSTKICH WINDOWS
Jeśli chcesz przedstawić alert obok wszystkich widoków, użyj tego kodu
Wywołanie funkcji
Metoda 4:
Alert z rozszerzeniem
Teraz zadzwoń tak
Metoda 5:
ALERT Z TEKSTAMI
Jeśli chcesz dodać pola tekstowe do powiadomienia.
Metoda 6:
Alert w SharedClass z rozszerzeniem
Teraz zadzwoń bezpośrednio w ten sposób
Metoda 7:
Alarmuj bez wspólnej klasy z rozszerzeniem w osobnej klasie dla powiadomienia.
Utwórz jedną nową klasę Swift i
import UIKit
. Skopiuj i wklej poniżej kodu.Teraz zadzwoń do funkcji ostrzegania w ten sposób we wszystkich klasach (pojedyncza linia).
Jak to jest....
źródło
if timeInterval != 0 { if #available(iOS 10.0, *) { Timer.scheduledTimer(withTimeInterval: timeInterval, repeats: false, block: { _ in alert.dismiss(animated: true, completion: nil) }) } else { // Fallback on earlier versions } }
Kliknij Widok
Gotowe z dwoma przyciskami OK i Anuluj
źródło
Jeśli celujesz w iOS 7 i 8, potrzebujesz czegoś takiego, aby upewnić się, że używasz właściwej metody dla każdej wersji, ponieważ
UIAlertView
jest przestarzała w iOS 8, aleUIAlertController
nie jest dostępna w iOS 7:źródło
UIAlertView
dopóki nie zrezygnujesz z obsługi systemu iOS 7. Apple nie odrzuci Twojej aplikacji.Rozszerzenia protokołu Swift 2 umożliwiają utworzenie protokołu zapewniającego domyślną implementację kontrolerów widoku:
ShowsAlert.swift
ViewController.swift
źródło
Pokaż UIAlertView w szybkim języku: -
Protokół UIAlertViewDelegate
Pokaż UIAlertViewController w szybkim języku: -
źródło
Po prostu nie udostępniaj otherButtonTitles w konstruktorze.
Ale zgadzam się z Oscarem, ta klasa jest przestarzała w iOS 8, więc nie będziesz używać UIAlertView, jeśli robisz aplikację tylko na iOS 8. W przeciwnym razie powyższy kod będzie działał.
źródło
Znalazłem ten
nie dobrze, ale działa :)
Aktualizacja:
ale znalazłem w pliku nagłówkowym jako:
ktoś może to wyjaśnić.
źródło
Myślę , że w przypadku SWIFT4 rozszerzenie
UIViewController
i utworzenie kontroli potwierdzeń wielokrotnego użytku jest najbardziej eleganckim sposobem.Możesz przedłużyć,
UIViewController
jak poniżej:Następnie możesz go użyć w dowolnym momencie:
źródło
źródło
Mam inną sztuczkę. Załóżmy, że masz 5 klas, w których należy zastosować alert wylogowania. Spróbuj z szybkim rozszerzeniem klasy.
File- New- Swift class- Name it.
Dodaj następujące:
Zaimplementuj za pomocą: self.makeLogOutAlert (). Mam nadzieję, że to pomoże.
źródło
Zrobiłem lekcję singleton, aby uczynić to wygodne w użyciu z dowolnego miejsca w Twojej aplikacji: https://github.com/Swinny1989/Swift-Popups
Następnie możesz utworzyć wyskakujące okienko z wieloma przyciskami jak poniżej:
lub wyskakujące okienka z jednym takim przyciskiem:
źródło
Szybki 3
Poniżej znajduje się prosty przykład, jak utworzyć prosty alert za pomocą jednego przycisku w Swift 3.
W powyższym przykładzie pominięto uchwyt wywołania akcji, ponieważ domyślnym zachowaniem widoku alertu z jednym przyciskiem jest zniknięcie po kliknięciu tego przycisku.
Oto, jak utworzyć kolejną akcję, którą można dodać do alertu za pomocą „alert.addAction (akcja)”. Różne style to .default, .destructive i .cancel.
źródło
Mam następujący
UIAlertView
kod inicjalizacyjny, aby skompilować bez błędów (myślę, że ostatnia, odmienna część jest chyba trudna). Ale musiałem się upewnić, że klasaself
(którą przekazuję jako delegat) przyjmujeUIAlertViewDelegate
protokół, aby błędy kompilacji zniknęły:Nawiasem mówiąc, jest to błąd, który otrzymałem (od Xcode 6.4):
Jak wspomniano inni, należy przeprowadzić migrację do UIAlertController, jeśli można kierować system iOS 8.x +. Aby obsługiwać iOS 7, użyj powyższego kodu (iOS 6 nie jest obsługiwany przez Swift).
źródło
źródło
Możesz użyć tego prostego rozszerzenia z liczbą przycisków n i powiązanymi akcjami swift4 i nowszymi
możesz go używać w taki sposób,
źródło
Powód, dla którego nie działa, ponieważ niektóre wartości przekazane do funkcji są nieprawidłowe. swift nie lubi Objective-C, możesz ustawić zero na argumenty typu klasy bez żadnych ograniczeń (być może). Argument otherButtonTitles jest zdefiniowany jako nieobowiązkowy, którego typ nie ma na końcu (?). więc musisz przekazać konkretną wartość.
źródło
Spróbuj tego
źródło
Użyj tego kodu, aby wyświetlić widok alertów
Odniesienie: Swift Show Alert za pomocą UIAlertController
źródło
w xcode 9
źródło
SWIFT 4: Po prostu utwórz rozszerzenie UIViewController w następujący sposób:
Teraz w twoim ViewController, bezpośrednio wywołaj powyższą funkcję, tak jakby były one dostarczane przez UIViewController.
źródło
Spróbuj tego. Umieść przycisk poniżej kodu.
źródło
Oto zabawny przykład w Swift:
źródło
Oto dość prosta funkcja AlertView w Swift:
Musisz przekazać wiadomość jako ciąg znaków, w którym używasz tej funkcji.
źródło
Stara droga: UIAlertView
Nowa droga: UIAlertController
źródło
na IOS 9 możesz to zrobić
źródło
// Klasa ogólna dla UIAlertView
Posługiwać się:-
źródło
źródło