2015-06-29 36 views
7

Merhaba, Swift'de @IBAction için otomatik arama işlevini nasıl tıklayacağınızdan emin değilim. Geri sayım bittiğinde@IBAction işlevini Otomatik olarak çağırma

Demek, bir zamanlayıcı fonksiyonuna sahiptir, ben düğmeye swift bunu yapmak için nasıl

tıkla kullanıcıya sormak programlı yerine aşağıdaki gibi tıklayın fonksiyonlu @IBAction araman gerekiyor mu?

 

@IBAction func DoSomeTask(sender: UIButton) { 

- code-- 

} 
+4

Göndereni değiştir: UIButton 'gönderen: UIButton!' Ve istediğiniz yere istediğiniz yerden DoSomeTask (nil). – sbarow

+0

Bu bir işlev. Sadece diğer işlevler gibi adlandırın. Düğmeden geçmek istemiyorsanız, gönderen olarak 'nil' değerini girebilmek için 'UIButton!' Veya 'UIButton?' (Isteğe bağlı) parametresini yapmanız gerekecektir. – Jesper

+0

Somut sorunun nedir? Basit bir işlevi çağırmıyor olabilir mi? – Eiko

cevap

25

Bunu parametresini yaparak IBAction imzasını değiştirebilir ya böyle bir İsteğe Bağlı:

@IBAction func doSomeTask(sender: UIButton?) { 
    // code 
} 

ve daha sonra bir argüman olarak nil ile diyoruz:

doSomeTask(nil) 

Ya IBAction'ı gerçek işlev için bir sarıcı olarak kullanabilirsiniz:

func doSomeTaskForButton() { 
    // ... 
} 

@IBAction func doSomeTask(sender: UIButton) { 
    doSomeTaskForButton() 
} 

, daha sonra doSomeTaskForButton()'u arayarak istediğiniz yerden arayabilirsiniz.

+1

kullanarak! veya? Bu func için? AnyObject kullanarak herhangi bir fark var mı? : doSomeTask (gönderen: UIButton!) veya doSomeTask (gönderen: AnyObject!) veya doSomeTask (gönderen: AnyObject?) veya doSomeTask (gönderen: UIButton?). Her iki durum çalışması gibi görünüyor. En iyi uygulama hangisi? Kullanıcı yanlışlıkla 1. oto çağrıdan sonra düğmeye tekrar basarsa, hala çalışır. – MilkBottle

+2

'doSomeTask (gönderen: UIButton!)', Bir argüman olarak nil'i geçemeyeceğiniz anlamına gelir ('' '' güç istemsiz '', 'doSomeTask (gönderen: AnyObject!)' Aynıdır ama sonra * Kullanmak için IBAction içinde bir UIButton olarak * gönderen * gönderen. 'doSomeTask (gönderen: UIButton?)' parametreyi bir Opsiyonel olarak sarar, çünkü butondan gerçek bir mesaj gönderebilmeniz ya da IBAction'ı doğrudan butondan aramazsanız, 'nil 'mesajını gönderebileceğinden iyidir. – Moritz

İlgili konular