[英]How can I call a function of UIViewController from its reference on a different swift file?
[英]How can I call a function from a different class in Swift?
我目前正在學習如何使用 Swift 編寫 Cocoa MacOS 應用程序。 我想知道如何訪問來自不同類的函數。
我目前有一個名為Button
(NSButton) 的類和另一個名為Window
(NSImageView) 的類。 在Window
,我有一個名為animate()
的函數。 我希望Window
的animate()
函數在Button
的MouseDown
函數被觸發時執行。
這是我嘗試過的:
override func mouseDown(with event: NSEvent) {
Window.animate()
}
我該怎么做呢? 我是 Swift 的新手,所以提前致謝。
如果您的按鈕在窗口中,您可以使用 Swift 的目標和操作機制來調用animate()
而無需從另一個類訪問您的窗口:
button.target = self
button.action = #selector(animate)
將您的動畫函數聲明為
@objc func animate() {
//...
}
如果您的按鈕在另一個窗口/視圖中,您可以使用此方法或您嘗試過的方法(覆蓋mouseDown
); 但是,無論哪種方式, animate()
要么必須是類 func ,要么您必須擁有可用於按鈕的窗口引用。 例如,您可以將窗口作為參數傳遞以初始化按鈕,或者創建窗口的static
實例並訪問該實例。
您想訪問來自不同類的函數嗎?
只需將該函數聲明為靜態函數!
class window: UIViewController{
static func animate()
{
///
}
}
然后你可以在程序中的任何地方調用它
window.animate()
好的,感謝您的幫助。 我發現了 IBOutlets 和 IBActions 是什么。 他們就是答案。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.