Saya telah bekerja untuk membuat UIAlertView di Swift, tetapi untuk beberapa alasan saya tidak bisa mendapatkan pernyataan dengan benar karena saya mendapatkan kesalahan ini:
Tidak dapat menemukan kelebihan untuk 'init' yang menerima argumen yang disediakan
Begini cara saya menulisnya:
let button2Alert: UIAlertView = UIAlertView(title: "Title", message: "message",
delegate: self, cancelButtonTitle: "OK", otherButtonTitles: nil)
Lalu untuk menyebutnya saya menggunakan:
button2Alert.show()
Sampai sekarang ini sedang crash dan sepertinya saya tidak bisa mendapatkan sintaks yang benar.
ios
swift
cocoa-touch
uialertview
uialertcontroller
BlueBear
sumber
sumber
UIAlertView
danUIActionSheet
telah diganti olehUIAlertController
di iOS 8, sudahkah Anda melihat ini?self
termasuk dalam mengadopsi protokolUIAlertViewDelegate
(cara yang disarankan untuk melakukan ini, di Swift, adalah dengan ekstensi).Jawaban:
Dari
UIAlertView
kelas:Di iOS 8, Anda dapat melakukan ini:
Sekarang
UIAlertController
adalah satu kelas untuk membuat dan berinteraksi dengan apa yang kita ketahui sebagaiUIAlertView
danUIActionSheet
di iOS 8.Sunting: Untuk menangani tindakan:
Edit untuk Swift 3:
Edit untuk Swift 4.x:
sumber
UIAlertView
kelas, dan komentar tepat di atas deklarasi kelas..Default
?Satu tombol
Dua tombol
Tiga tombol
Menangani Tombol Tekan
The
handler
adalahnil
pada contoh di atas. Anda dapat menggantinil
dengan penutup untuk melakukan sesuatu ketika pengguna mengetuk tombol. Sebagai contoh:Catatan
UIAlertAction.Style
jenis yang berbeda . Mereka semua bisa.default
.sumber
Anda dapat membuat UIAlert menggunakan konstruktor standar, tetapi 'legacy' tampaknya tidak berfungsi:
sumber
Di Swift 4.2 dan Xcode 10
Metode 1:
ALERT SEDERHANA
Metode 2:
PERINGATAN DENGAN KELAS BERBAGI
Jika Anda ingin gaya kelas bersama (Tulis sekali pakai di mana saja)
Sekarang panggil lansiran seperti ini di setiap perangkat
Metode 3:
PERINGATKAN ALERT TOP OF SEMUA WINDOWS
Jika Anda ingin menyampaikan peringatan di atas semua tampilan, gunakan kode ini
Panggilan fungsi
Metode 4:
Peringatan dengan Ekstensi
Sekarang panggil seperti ini
Metode 5:
PERINGATAN DENGAN TEKS
Jika Anda ingin menambahkan bidang teks untuk mengingatkan.
Metode 6:
Lansiran di SharedClass dengan Ekstensi
Sekarang panggil langsung seperti ini
Metode 7:
Peringatan tanpa kelas bersama dengan Ekstensi di kelas terpisah untuk peringatan.
Buat satu kelas Swift baru, dan
import UIKit
. Salin dan tempel kode di bawah ini.Sekarang panggil fungsi peringatan seperti ini di semua kelas Anda (saluran tunggal).
Bagaimana itu....
sumber
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 } }
Klik Tampilan
Dilakukan dengan dua tombol, OK & Batal
sumber
Jika Anda menargetkan iOS 7 dan 8, Anda perlu sesuatu seperti ini untuk memastikan Anda menggunakan metode yang tepat untuk setiap versi, karena
UIAlertView
sudah usang di iOS 8, tetapiUIAlertController
tidak tersedia di iOS 7:sumber
UIAlertView
sampai Anda menjatuhkan dukungan untuk iOS 7. Apple tidak akan menolak aplikasi Anda untuk itu.Dengan ekstensi protokol Swift 2, Anda dapat membuat protokol yang menyediakan implementasi default untuk pengontrol tampilan Anda:
ShowsAlert.swift
LihatController.swift
sumber
Tampilkan UIAlertView dalam bahasa cepat: -
Protokol UIAlertViewDelegate
Tampilkan UIAlertViewController dalam bahasa cepat: -
sumber
Sederhananya, jangan berikan Tombol lain di konstruktor.
Tapi saya setuju dengan Oscar, kelas ini sudah usang di iOS 8, jadi tidak akan ada penggunaan UIAlertView jika Anda melakukan aplikasi iOS 8 saja. Kalau tidak, kode di atas akan berfungsi.
sumber
Saya menemukan ini,
tidak bagus, tapi berhasil :)
Memperbarui:
tapi saya temukan di file header sebagai:
seseorang dapat menjelaskan hal ini.
sumber
Untuk SWIFT4 , saya pikir, memperluas
UIViewController
dan membuat kontrol konfirmasi yang dapat digunakan kembali adalah cara yang paling elegan.Anda dapat memperpanjang
UIViewController
seperti di bawah ini:Maka Anda dapat menggunakannya kapan saja:
sumber
sumber
Saya punya trik lain. Misalkan Anda memiliki 5 kelas tempat peringatan logout diterapkan. Coba dengan ekstensi kelas cepat.
File- Baru- Swift class- Beri nama.
Tambahkan yang berikut ini:
Terapkan dengan menggunakan: self.makeLogOutAlert (). Semoga ini bisa membantu.
sumber
Saya telah membuat kelas tunggal untuk membuat ini nyaman digunakan dari mana saja di aplikasi Anda: https://github.com/Swinny1989/Swift-Popups
Anda kemudian dapat membuat sembulan dengan beberapa tombol seperti ini:
atau sembulan dengan satu tombol seperti ini:
sumber
Cepat 3
Berikut ini adalah contoh sederhana tentang cara membuat peringatan sederhana dengan satu tombol dengan Swift 3.
Dalam contoh di atas gagang panggilan balik tindakan telah dihilangkan karena perilaku default tampilan peringatan dengan satu tombol adalah menghilang ketika tombol diklik.
Berikut adalah cara membuat tindakan lain, yang dapat ditambahkan ke lansiran dengan "alert.addAction (action)". Gaya yang berbeda adalah .default, .destructive dan .cancel.
sumber
Saya mendapat yang berikut
UIAlertView
kode inisialisasi untuk dikompilasi tanpa kesalahan (saya pikir bagian terakhir, yang bervariasi mungkin rumit). Tetapi saya harus memastikan bahwa kelasself
(yang saya sampaikan sebagai delegasi) mengadopsiUIAlertViewDelegate
protokol agar kesalahan kompilasi hilang:Omong-omong, ini adalah kesalahan yang saya dapatkan (pada Xcode 6.4):
Seperti yang disebutkan lainnya, Anda harus bermigrasi ke UIAlertController jika Anda dapat menargetkan iOS 8.x +. Untuk mendukung iOS 7, gunakan kode di atas (iOS 6 tidak didukung oleh Swift).
sumber
sumber
Anda dapat menggunakan ekstensi sederhana ini dengan n jumlah tombol dan tindakan terkait swift4 dan di atasnya
Anda bisa menggunakannya seperti,
sumber
Alasan itu tidak berfungsi karena beberapa nilai yang Anda berikan ke fungsi tidak benar. swift tidak suka Objective-C, Anda dapat menempatkan nol pada argumen yang merupakan tipe kelas tanpa batasan (mungkin). Argumen otherButtonTitles didefinisikan sebagai non-opsional yang jenisnya tidak memiliki (?) Pada akhirnya. jadi Anda harus memberikan nilai konkret untuk itu.
sumber
Coba ini
sumber
Gunakan kode ini untuk menampilkan tampilan peringatan
Referensi: Swift Show Alert menggunakan UIAlertController
sumber
dalam xcode 9
sumber
SWIFT 4: Cukup buat ekstensi ke UIViewController sebagai berikut:
Sekarang di ViewController Anda, langsung panggil fungsi di atas seolah-olah disediakan oleh UIViewController.
sumber
coba ini. Masukkan Kode Bellow Di Tombol.
sumber
Ini adalah contoh lucu di Swift:
sumber
Berikut adalah fungsi AlertView in Swift yang cukup sederhana:
Anda harus meneruskan pesan sebagai String tempat Anda menggunakan fungsi ini.
sumber
The Old Way: UIAlertView
Cara Baru: UIAlertController
sumber
pada iOS 9, Anda dapat melakukan ini
sumber
// Kelas Umum Untuk UIAlertView
Menggunakan:-
sumber
sumber