2015-06-29 16 views
7

Xin chào, tôi không chắc chắn cách thực hiện tự động gọi hàm nhấp chuột cho @IBAction trong Swift.Cách tự động gọi chức năng @IBAction

Nói, tôi có một chức năng hẹn giờ, khi đếm ngược kết thúc, tôi cần phải gọi Click chức năng @IBAction như sau theo chương trình thay vì hỏi người dùng nhấp vào nút

Làm thế nào để làm điều đó trong nhanh chóng?

 

@IBAction func DoSomeTask(sender: UIButton) { 

- code-- 

} 
+4

Thay đổi 'người gửi: UIButton' thành' người gửi: UIButton! 'Và gọi' DoSomeTask (nil) 'từ nơi bạn muốn. – sbarow

+0

Đó là một chức năng. Chỉ cần gọi nó giống như bất kỳ chức năng khác. Bạn sẽ cần phải thực hiện tham số 'UIButton!' Hoặc 'UIButton?' (Tùy chọn) để có thể truyền vào 'nil' làm người gửi nếu bạn không muốn truyền vào nút. – Jesper

+0

Vấn đề cụ thể của bạn là gì? Nó không thể gọi một hàm đơn giản? – Eiko

Trả lời

25

Bạn có thể thay đổi chữ ký của IBAction bằng cách làm cho thông số của nó một tùy chọn như thế này:

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

và sau đó gọi nó với con số không như một cuộc tranh cãi:

doSomeTask(nil) 

Hoặc bạn có thể sử dụng IBAction làm trình bao bọc cho hàm thực:

func doSomeTaskForButton() { 
    // ... 
} 

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

có nghĩa là bạn có thể gọi doSomeTaskForButton() từ bất cứ nơi nào bạn muốn.

+1

sử dụng! hoặc là ? cho những func? có bất kỳ diff bằng cách sử dụng AnyObject? : doSomeTask (người gửi: UIButton!) hoặc doSomeTask (người gửi: AnyObject!) hoặc doSomeTask (người gửi: AnyObject?) hoặc doSomeTask (người gửi: UIButton?). Có vẻ như cả hai điều kiện hoạt động. Cách nào là phương pháp hay nhất? Ngay cả người dùng vô tình nhấn nút một lần nữa sau khi cuộc gọi tự động đầu tiên, nó vẫn hoạt động. – MilkBottle

+2

'doSomeTask (người gửi: UIButton!)' Có nghĩa là bạn không thể chuyển nil như một đối số ('unw' force unwraps), 'doSomeTask (sender: AnyObject!)' Là giống nhau nhưng sau đó bạn sẽ phải * cast * 'sender' như một UIButton bên trong IBAction để sử dụng nó. 'doSomeTask (người gửi: UIButton?)' là tốt bởi vì nó bao bọc tham số trong một Tùy chọn, vì vậy bạn có thể gửi một thông điệp thực tế từ nút hoặc 'nil' nếu bạn không gọi IBAction từ nút trực tiếp. – Moritz

Các vấn đề liên quan