2013-02-24 3 views
7

Я пытаюсь создать кнопку, в которой после нажатия появится popover другого UIView. Чтобы проверить это, у меня есть следующий код в моем разделе viewDidLoad:Программный код UIButton action

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    self.hard1 = [UIButton buttonWithType:UIButtonTypeCustom]; 
    [self.hard1 setFrame:CGRectMake(884, 524, 105, 60)]; // set the x,y,width and height based on your specs 
    UIImage *buttonImage = [UIImage imageNamed:@"green.jpg"]; 
    hard1.layer.cornerRadius = 10; 
    hard1.clipsToBounds = YES; 
    [hard1 addTarget: self 
       action: @selector(buttonClicked:) 
    forControlEvents: UIControlEventTouchUpInside]; 
    [self.hard1 setImage:buttonImage forState:UIControlStateNormal]; 
    [self.view addSubview:self.hard1]; 
} 

и далее вниз:

- (IBAction) buttonClicked: (id)sender 
{ 
    NSLog(@"Tap"); 
} 

однако, консоль не записывает в журнал «Tap», когда я нажал на кнопку. Есть идеи?

ответ

12

Часы эти три строки кода:

hard1.layer.cornerRadius = 10; 
hard1.clipsToBounds = YES; 
[hard1 addTarget: self 
      action: @selector(buttonClicked:) 
forControlEvents: UIControlEventTouchUpInside]; 

Вы не хватает себя. во всех трех. Они должны быть:

self.hard1.layer.cornerRadius = 10; 
self.hard1.clipsToBounds = YES; 
[self.hard1 addTarget: self 
      action: @selector(buttonClicked:) 
forControlEvents: UIControlEventTouchUpInside]; 

Кроме того, если вы создаете его программно, она не должна быть IBAction (IB означает интерфейс строитель, и это не будет создан в интерфейсе строителя).

+0

Ах, глупо меня. Большое спасибо! –

+1

Теперь, когда я нахожусь на нем. Когда вы создаете свойство, сделайте это в синтезе: @synthesize hard1 = _hard1; Этот способ ссылается на свойство как на "hard1" не работает. Это либо self.hard1, либо _hard1 (последнее только для использования в методе setter) – Odrakir

+0

большое спасибо за вашу помощь –

0

Вы поставили ответчика на события buttonClicked, но в IBAction вы определили buttonTap. Это, очевидно, не работает ...

Это должно быть

[hard1 addTarget: self 
       action: @selector(buttonTap:) 
    forControlEvents: UIControlEventTouchUpInside]; 
+0

Я сделал опечатку. Мой фактический код отредактирован выше, все еще не работает. –

3
self.hard1 = [UIButton buttonWithType:UIButtonTypeCustom]; 


[hard1 addTarget: self 
       action: @selector(buttonClicked:) forControlEvents: UIControlEventTouchUpInside]; 

Заменить hard1 на self.hard1

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