Saya telah menambahkan beberapa target-action-forControlEvents: ke UIButton. Saya ingin menghapus semua ini dalam satu jalan tanpa membatalkan apa pun. Saya kemudian akan menetapkan target baru.
Apakah ini mungkin dan bagaimana saya melakukannya?
Panggil removeTarget: action: forControlEvents:, berikan nil untuk target, NULL untuk aksi, dan gunakan masker kontrol yang menetapkan semua bit (UIControlEventAllEvents).
Objektif-C
[someControl removeTarget:nil
action:NULL
forControlEvents:UIControlEventAllEvents];
Cepat 2
button.removeTarget(nil, action: nil, forControlEvents: .AllEvents)
Cepat 3
button.removeTarget(nil, action: nil, for: .allEvents)
@ jawaban progrmr dalam Swift 2:
dan Swift 3:
Catatan: Swift tidak punya
NULL
, jadi saya diuji menggantinyanil
dan sepertinya berfungsi dengan baik.sumber
removeTarget(nil, action: nil, for: .allEvents)
nil
atauNULL
untuk kedua argumen pertama dan kedua di Objective-C juga, dan itu akan bekerja. Saya percaya keduanya didefinisikan sebagai(void*) 0
(atau paling tidak, mengevaluasi sama dengan).Cepat:
sumber
Swift 2:
Swift 3 & 4:
Tujuan-C:
Semoga ini bisa membantu.
sumber
Metode ini menghentikan pengiriman peristiwa ke objek target yang ditentukan.
Menentukan objek yang valid dalam parameter target, metode ini menghentikan pengiriman peristiwa yang ditentukan ke semua metode tindakan yang terkait dengan objek itu.
Menentukan nil untuk parameter target, metode ini mencegah pengiriman peristiwa tersebut ke semua metode tindakan semua objek target
tujuan-c:
cepat:
Untuk detail lebih lanjut https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIControl_Class/index.html#//apple_ref/occ/instm/UIControl/removeTarget:action:forControlEvents :
sumber