簡體   English   中英

如何從 Swift 中的不同類調用函數?

[英]How can I call a function from a different class in Swift?

我目前正在學習如何使用 Swift 編寫 Cocoa MacOS 應用程序。 我想知道如何訪問來自不同類的函數。

我目前有一個名為Button (NSButton) 的類和另一個名為Window (NSImageView) 的類。 Window ,我有一個名為animate()的函數。 我希望Windowanimate()函數在ButtonMouseDown函數被觸發時執行。

這是我嘗試過的:

    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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM