2012-05-25 58 views
2

在iOS上,如果我們使用Interface Builder,我們可以輕鬆創建Outlet和Action。在iOS上,我們可以通過代碼輕鬆創建Outlet - 操作如何?

如果我們使用Objective-C代碼,而不是Interface Builder中,我們可以很容易地創建出口太多,現在看來,僅通過

datePicker = [[UIDatePicker alloc] initWithFrame:CGRectMake(200, 200, 200, 200)]; 
[self.view addSubview:datePicker]; 

與我們定義的.h文件中的一個實例變量。

UIDatePicker *datePicker; 

而且我認爲這完全像一個Outlet?

對於操作怎麼樣 - 我們如何爲不同類型的用戶交互操作純粹使用Objective-C代碼(不使用Interface Builder)來創建Actions?

回答

3

就像這樣:

- (void)someMethod { 
    //... 
    [button_ addTarget:self 
       action:@selector(buttonAction:) 
    forControlEvents:UIControlEventTouchUpInside]; 
    //... 
} 

//... 

// Either |IBAction| or |void| is okay, 
// the former one is just used to be shown in Interface Builder 
- (void)buttonAction:(id)sender { 
    // your action code here 
} 

注:IBOutlet & IBAction僅供IB(簡稱界面生成器)。如果您不想使用Interface Builder來管理視圖&操作,則可以將其忘記。

+0

你的按鈕變量怎麼變成'button_'(帶下劃線)?我還看到一些代碼,如ViewController將_view作爲實例變量,但下劃線在前面 –

+2

他選擇用下劃線定義匹配的iVars。這只是傳統的,實際上'@Synthesize button = hrighaohfunaksifh ___'也可以。 – CodaFi

+1

@動靜能量CodaFi是對的。你可以參考它[這裏](http://stackoverflow.com/questions/8832091/ivar-vs-ivar-for-variable-naming),如果你有興趣。:) – Kjuly

1

使用IBAction宏:

// in .h 
-(IBAction) myAction:(id) sender; 
+0

我確定他的意思是來自UIControl類的'addTarget:action:forControlEvents:',儘管他的問題確實很模糊。 – JustSid

+0

我的意思是,我們可以擁有事件處理程序並使用Interface Builder的出口和動作更改控件的屬性。如果我們純粹通過Objective-C(沒有Interface Builder)來做什麼呢? –

相關問題