2015-12-13 4 views
7

я добавить UIButton программно, и я хочу, чтобы вызвать метод при нажатии на него, я не уверен, как разработать такую ​​картину:Как создать событие для UIButton в ViewController?

  1. , где я должен поставить обработчик события или метод действия? в поле зрения контроллера или просмотра.

  2. Если я поставил метод в виде контроллера, как я могу манипулировать SubViews вида в методе? должен ли я показывать все SubViews (UIButton и т. д.) контроллеру, помещая их в заголовочный файл вида как свойства? На самом деле этот вопрос должен ответить таким образом: Как я могу реализовать с помощью кода, который SubViews в представлении связаны к IBOutlet свойств с помощью Interface Builder ...

+0

свойство может быть доступ ко всем подзонам в контроллере представления. Вы можете создать выход ibaction для обработки события кнопки или добавить свой собственный целевой метод !!! –

ответ

8

Проверить эту ссылку для основы просмотра иерархии IOS : Getting started with iOS Views и понять, следующая диаграмма (кредиты: techrepublic.com):

Credits: http://www.techrepublic.com/

программным:

// Create your button wherever you wish (below is example button) 
UIButton *myButton = [UIButton buttonWithType:UIButtonTypeCustom]; 
myButton.frame = CGRectMake(0.0, 0.0, 320, 450); 
[myButton setTitle:@"Yay" forState:UIControlStateNormal]; 
[myButton addTarget:self action:@selector(didTouchUp:) forControlEvents:UIControlEventTouchUpInside]; 
[self.view addSubview:myButton]; 

// This method will be called when touch up is made on the button 
- (void)didTouchUp:(UIButton *)sender { 
    NSLog(@"Button Pressed!"); 
} 

Объяснение:

[myButton addTarget:self action:@selector(didTouchUp:) forControlEvents:UIControlEventTouchUpInside]; 
  • MyButton - Ваше мнение Кнопка
  • addTarget - мишень, в которой метод существует в
  • действия - селектор вы хотите позвонить
  • forControlEvents - контроль событий пользователь будет делать, чтобы вызвать это действие

Использование раскадровки:

enter image description here

  • (A) Убедитесь, что раскадровка соответствует правильному классу
  • (B) Перетащите UIButton из библиотеки объектов в раскадровку

Затем объявление d в файл ViewController.h:

#import <UIKit/UIKit.h> 

@interface ViewController : UIViewController 

@property (weak, nonatomic) IBOutlet UIButton *myButton; 

- (IBAction)didTouchUp:(id)sender; 

@end 

Затем добавить к ViewController.м файла:

- (IBAction)didTouchUp:(id)sender { 
    NSLog(@"Button Pressed!"); 
} 

Наконец, создать связь между UIButton и IBAction:

enter image description here

  • (A) Нажмите правой кнопкой мыши на кнопке View
  • (B) Drag касания до появления кнопки на раскадровке
  • (C) Press on didTouchUp:

Это очень основной поток, чтобы сделать такой шаг ... Вы могли бы хотеть тратить свои навыки чтения следующее:

+1

Отличная помощь, которую вы сделали, человек! –

+0

@AlanHoo мое удовольствие! Если это вам помогло, пожалуйста, отметьте мой ответ как правильный. Большое спасибо! –

+1

Отмечено это ... спасибо ... –

Смежные вопросы