2011-06-28 22 views

回答

2

您可以將目標設置爲任何instance/object。實例/對象應該響應您設置的選擇器。否則,你會得到SIGABRT異常。

大多數情況下,我們將目標設置爲我們的自定義視圖控制器,因爲我們對某些事件進行了一些操作。如果我們在當前視圖控制器中定義動作,我們將Self設置爲目標。你可以將它設置一些其他視圖控制器像下面,

AViewController *a = [[AViewController alloc] init]; 
[yourButton addTarget:a action:@selector(onButtonPressed:) forControlEvents:UIControlEventTouchUpInside]; 

當你點擊yourButton視圖控制器實例a的作用onButtonPressed:將被觸發。 注意:AViewController應實現方法onButtonPressed:。如果沒有,您將收到SIGABRT。

+0

視圖控制器的實例?你能給我一些樣品嗎?在我將目標分配給實例控制器之後,我得到了程序接收信號「SIGABRT」。我的按鈕是全局的,並在同一個.m文件中調用全局函數 – WondererInAsh

+0

謝謝你,EmptyStack。我可以按照你的指示做到,但我的問題仍然沒有完全解決。正如你所說,控制器應該實現該方法,但我在不同的文件中使用全局方法。我把全局方法放在頭文件中(例如Global.h),然後我將Global.h導入到AViewController中,但程序類型凍結。我想知道爲什麼? – WondererInAsh

+0

@SomethingLikesNothing,您正在使用什麼代碼來設置目標動作? – EmptyStack

0

我有同樣的錯誤, 它解決了與[AViewController類]作爲目標的變化。

[yourButton addTarget:[AViewController class] action:@selector(onButtonPressed:) forControlEvents:UIControlEventTouchUpInside]; 

我的類也被聲明爲+符號,因爲它是一個用於所有應用程序的庫。

@interface SocialClass : NSObject 

+ (void) gotoYoutube; 
+ (void) gotoFacebook; 
+ (void) gotoTwiter; 

@end 
相關問題