Как добавить действие к кнопке программно в xcode - PullRequest
101 голосов
/ 30 апреля 2011

Я знаю, как добавить IBAction к кнопке, перетаскивая из конструктора интерфейса, но я хочу добавить действие программно, чтобы сэкономить время и избежать постоянного переключения вперед и назад.Решение, вероятно, очень простое, но я просто не могу найти ответы, когда ищу его.Спасибо!

Ответы [ 9 ]

220 голосов
/ 30 апреля 2011

Попробуйте это:

Swift 4

myButton.addTarget(self,
                   action: #selector(myAction),
                   for: .touchUpInside)

Objective-C

[myButton addTarget:self 
             action:@selector(myAction) 
   forControlEvents:UIControlEventTouchUpInside];

Вы можете найти богатый источник информации в документации Apple. Взгляните на документацию UIButton , там будет показано, что UIButton является потомком UIControl, , который реализует метод для добавления целей .

-

Вам нужно будет обратить внимание на то, следует ли добавлять двоеточие или нет после myAction в action:@selector(myAction)

Вот ссылка .

23 голосов
/ 25 июня 2015

Быстрый ответ:

myButton.addTarget(self, action: "click:", for: .touchUpInside)

func click(sender: UIButton) {
    print("click")
}

Документация: https://developer.apple.com/documentation/uikit/uicontrol/1618259-addtarget

14 голосов
/ 11 февраля 2012
CGRect buttonFrame = CGRectMake( 10, 80, 100, 30 );
        UIButton *button = [[UIButton alloc] initWithFrame: buttonFrame];
        [button setTitle: @"My Button" forState: UIControlStateNormal];
        [button addTarget:self action:@selector(btnSelected:) forControlEvents:UIControlEventTouchUpInside];
        [button setTitleColor: [UIColor redColor] forState: UIControlStateNormal];
[view addSubview:button];
8 голосов
/ 30 апреля 2015

попробуйте:

сначала запишите это в ваш .h файл viewcontroller

UIButton *btn;

Теперь запишите это в ваш .m файл viewcontrollers viewDidLoad.

btn=[[UIButton alloc]initWithFrame:CGRectMake(50, 20, 30, 30)];
[btn setBackgroundColor:[UIColor orangeColor]];
//adding action programatically
[btn addTarget:self action:@selector(btnClicked:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:btn];

записать этот внешний метод viewDidLoad в файл .m вашего контроллера представления

- (IBAction)btnClicked:(id)sender
{
   //Write a code you want to execute on buttons click event
}
8 голосов
/ 16 апреля 2014
 CGRect buttonFrame = CGRectMake( x-pos, y-pos, width, height );   //
 CGRectMake(10,5,10,10) 

 UIButton *button = [[UIButton alloc] initWithFrame: buttonFrame];

 button setTitle: @"My Button" forState: UIControlStateNormal];

 [button addTarget:self action:@selector(btnClicked:) 
 forControlEvents:UIControlEventTouchUpInside];

 [button setTitleColor: [UIColor BlueVolor] forState:
 UIControlStateNormal];

 [view addSubview:button];




 -(void)btnClicked {
    // your code }
6 голосов
/ 24 декабря 2016

Для Swift 3

Сначала создайте функцию для действия кнопки, а затем добавьте функцию к целевой кнопке

func buttonAction(sender: UIButton!) {
    print("Button tapped")
}

button.addTarget(self, action: #selector(buttonAction),for: .touchUpInside)
3 голосов
/ 07 октября 2013
UIButton *btnNotification=[UIButton buttonWithType:UIButtonTypeCustom];
btnNotification.frame=CGRectMake(130,80,120,40);
btnNotification.backgroundColor=[UIColor greenColor];
[btnNotification setTitle:@"create Notification" forState:UIControlStateNormal];
[btnNotification addTarget:self action:@selector(btnClicked) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:btnNotification];


}

-(void)btnClicked
{
    // Here You can write functionality 

}
2 голосов
/ 30 апреля 2011

UIButton наследуется от UIControl. Это имеет все методы для добавления / удаления действий: UIControl Class Reference . Посмотрите на раздел «Подготовка и отправка сообщений о действиях», который охватывает – sendAction:to:forEvent: и – addTarget:action:forControlEvents:.

1 голос
/ 16 апреля 2014
 UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[button addTarget:self 
       action:@selector(aMethod1:)
forControlEvents:UIControlEventTouchUpInside];
[button setTitle:@"Show View" forState:UIControlStateNormal];
button.frame = CGRectMake(80.0, 210.0, 160.0, 40.0);
[view addSubview:button];   
...