2013-02-24 52 views
7

Tôi đang cố gắng tạo nút, khi đã nhấn vào sẽ hiển thị cửa sổ bật lên của một UIView khác. Để kiểm tra điều này ra, tôi có đoạn mã sau vào phần viewDidLoad của tôi:Mã theo lập trình Hành động UIButton

- (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]; 
} 

và tiếp tục xuống:

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

tuy nhiên, giao diện điều khiển không đăng nhập 'Tap' khi tôi nhấn nút. Bất kỳ ý tưởng?

Trả lời

12

Xem những đoạn ba dòng mã:

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

Bạn đang thiếu tự. trong cả ba. Họ phải là:

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

Ngoài ra, nếu bạn tạo nó theo chương trình, nó không phải là IBAction (IB là viết tắt của trình tạo giao diện và điều này không được tạo trong trình tạo giao diện).

+0

Ah ngớ ngẩn tôi. Cảm ơn nhiều! –

+1

Bây giờ tôi đang ở trên đó. Khi bạn tạo thuộc tính làm điều này trong tổng hợp: @synthesize hard1 = _hard1; Bằng cách này đề cập đến tài sản như là chỉ "hard1" sẽ không hoạt động. Đó là self.hard1 hoặc _hard1 (chỉ sau này được sử dụng trong phương thức setter) – Odrakir

+0

cảm ơn rất nhiều sự giúp đỡ của bạn –

0

Bạn đã đặt trả lời sự kiện là buttonClicked nhưng trong IBAction bạn đã xác định buttonTap. Điều này sẽ rõ ràng không hoạt động ...

Nó phải là

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

tôi đã thực hiện một lỗi đánh máy. Mã thực sự của tôi được chỉnh sửa ở trên, vẫn không hoạt động. –

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


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

Thay hard1 để self.hard1

Các vấn đề liên quan