2016-09-30 65 views
-1

我想使用一個類的方法來實例化一個UIButton的基礎上,我通過,以及添加一個行動處理器,這樣的有效載荷:如何調用addTarget:action:forControlEvents:從類方法?

+ (void)instantiate: (UIButton *)button with:(NSDictionary *)payload { 
    [button addTarget:self action:@selector(buttonClicked:) forControlEvents:UIControlEventTouchUpInside]; 
    button.title = payload.title; 
} 

通常我不會有問題如果instantiate:with:方法是一種普通的方法,但我不知道如何在這種情況下執行buttonClicked:方法。

它應該是一個類方法嗎?它應該是一個實例方法嗎?另外如果我需要將其設置爲類方法,那麼如何在addTarget:action:forControlEvents:調用中指定@selector

+0

您在類方法中沒有自我訪問權限。 – Lubakis

+0

你的情況應該是什麼?按鈕本身?那是什麼課程?這個班的單身人士? – Larme

+0

@Lubakis當然,你在類方法中使用時會自引用實際的類。 – rmaddy

回答

0

在這種情況下,人們可能會爭論是否使用類方法或實例方法更好,但我只會回答編碼問題。

如果需要,可以使用類方法。您的instantiate:with:方法的實施情況良好。只需添加buttonClicked:方法即可。它需要是類方法:

+ (void)buttonClicked:(UIButton *)button { 
    // do stuff 
} 
+0

將自己添加爲目標可以嗎? (例如,而不是self.class) – Vlad

+0

'self'是類方法中的類。所以是的,只是使用'self'作爲目標是正確的。 – rmaddy

相關問題