2011-12-29 30 views
1

的目標我有一個UIViewController子類下面的代碼:如何獲得的UIBarButtonItem

MyViewController *viewController = [[MyViewController alloc] init]; 
viewController.title = title; 

UIBarButtonItem *doneButton = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"image"] 
                   style:UIBarButtonItemStyleDone 
                   target:self 
                   action:@selector(mySelector)]; 
viewController.navigationItem.leftBarButtonItem = doneButton; 


NSLog(@"Class name:%@",[viewController.navigationItem.leftBarButtonItem.target className]); 

的代碼崩潰的說法的NSLog且有警告說,沒有發現任何的className方法。不是目標屬性的一個對象,因此我應該可以調用它的className?

我實際上最終想做的是從viewController調用mySelector,而不必按下按鈕。有沒有一個好的方法來做到這一點?

+2

的className是不是NSObject的方法。真正的問題是與最後一段有關,還是中間的代碼。要按下按鈕來調用選擇器,只需直接調用該方法即可。 – 2011-12-29 14:29:39

+2

'className'在iOS上不可用。改爲使用'NSStringFromClass([anObject class])'。 – albertamg 2011-12-29 14:30:40

回答

3

要直接進行選擇,嘗試調用performSelector:

[[doneButton target] performSelector:[doneButton action]]; 
3

正確的方法是class而不是className。

如果你試圖模擬按鈕觸摸爲什麼不只是寫:

[self mySelector]; 
+0

感謝Mathieu,工作。我無法調用[self mySelector]的原因是我從MyViewController調用了這個函數,並且我在上面的代碼中唯一引用「self」的地方是通過doneButton。所以我需要從done按鈕中獲取對象實例和選擇器。 – Darren 2011-12-29 14:33:14