簡體   English   中英

swift中Target和Action有什么區別?

[英]What is the difference between Target and Action in swift?

我什么時候應該使用Target和零動作? 另一方面,我何時應該使用Action和nil Target,何時應該使用Action和Target?

let rightButton = UIBarButtonItem(title: "Done", style: .done, target: nil, action: nil)

通常,您會同時看到目標和行動。

目標和動作用於指代特定方法。 在您的代碼段中,您將創建一個UIBarButtonItem UIBarButtonItem需要知道在點擊它時應該調用什么方法。

你怎么告訴它調用哪種方法?

“只需傳遞方法參考”你可能會說:

let rightButton = UIBarButtonItem(
    title: "Done", style: .done, methodToCall: self.myMethod)

不幸的是,這只適用於swift。 UIBarBUttonItem是一個客觀的C API,因此無法使用此方法。

在目標C中, Selector表示方法,但它們不存儲調用方法的對象。 這就是我們需要額外target參數的原因。 它指定應該調用該方法的對象。 action ,另一方面,指定要調用哪個方法。

在這里,我們想要調用self.myMethod 調用該方法的對象是self ,被調用的方法是myMethod 大! 現在讓我們通過這些!

let rightButton = UIBarButtonItem(
        title: "Done", style: .done, target: self, action: #selector(myMethod))

根據Apple Doc。

目標操作是一種設計模式,其中對象保存在事件發生時將消息發送到另一個對象所需的信息。 存儲的信息由兩項數據組成:一個動作選擇器,它標識要調用的方法,以及一個目標,它是接收消息的對象。 事件發生時發送的消息稱為操作消息。 雖然目標可以是任何對象,甚至是框架對象,但它通常是一個自定義控制器,它以特定於應用程序的方式處理操作消息。

在此輸入圖像描述

就MVC而言

目標:

是作為委托查看對象的控制器(在您的情況下是UIBarButtonItem)。

行動:

響應視圖的方法調用(委托)。

更多檢查: Targe-Action

目標 - 是應該采取行動方法的東西。 在這種情況下,它應該是自我。 Self代表您的按鈕對象。

動作 - 表示將在按鈕的點擊事件上調用的選擇器方法。

如果您不想在按鈕上允許操作事件,請將選擇器指定為nil。 因此它應該只被視為一個按鈕對象。

目標:

應該調用選擇器(操作中指定的方法)的對象/實例。

行動:

按下按鈕時要觸發的方法的名稱。

什么時候應該使用Target和零動作?

當你的屏幕/ ViewController中有按鈕時你不希望它在點擊時觸發任何方法(沒有動作的虛擬按鈕)

該動作是方法的選擇器,當相應的事件發生時執行(例如,點擊按鈕)。 當您不設置任何操作時,您的按鈕將不執行任何操作。

目標是消息調用的接收者。 當您將其設置為nil ,將通過響應程序鏈發送消息調用。 這在iOS中很少使用,但在macOS中很常見。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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