2012-05-25 2 views
2

На iOS, если мы используем Interface Builder, мы можем легко создавать Outlet и Action.На iOS мы можем легко создать Outlet by code - а как насчет действий?

Если мы используем Objective-C код вместо Interface Builder, мы можем создать выход довольно легко тоже, по-видимому, лишь на

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

и что мы определяем переменную экземпляра в файле .h.

UIDatePicker *datePicker; 

И я думаю, что это точно так же, как выход?

Как о действиях - как мы создаем действия, используя код Objective-C (без использования Interface Builder) для разных типов взаимодействия с пользователем?

ответ

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). Вы можете забыть об этом, если вы не хотите использовать 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

Я уверен, что он означает 'addTarget: action: forControlEvents:' из класса 'UIControl', хотя его вопрос действительно довольно неоднозначен. – JustSid

+0

Я имею в виду, что мы можем иметь обработчик события и изменять свойство элемента управления, используя выход Interface Interface и действие. Что делать, если мы делаем это исключительно Objective-C (без интерфейса Builder)? –