2010-11-06 4 views
5

Tôi có đoạn code sautruy cập UIButton bởi (id) sender

-(IBAction)ATapped:(id)sender{ 
//want some way to hide the button which is tapped 
self.hidden = YES; 
} 

Đó là liên kết với nhiều nút. Tôi muốn ẩn nút kích hoạt IBAction này. self.hidden rõ ràng không phải là nút.

Làm cách nào để ẩn nút đã được nhấn? Người gửi.

Cảm ơn

Trả lời

7

Gửi setHidden thông điệp tới người gửi:

-(IBAction)ATapped:(id)sender{ 
    //want some way to hide the button which is tapped 
    [sender setHidden:YES]; 
} 
+0

Tôi đã thử sender.hidden = YES; trước khi tôi đăng bài này. nó đã đưa ra một lỗi. – jarryd

+0

lỗi chính xác là gì? – Vladimir

+0

Ok, .hidden cung cấp lỗi "không phải là cấu trúc hoặc công đoàn", nhưng [setHidden: YES] hoạt động;) – jarryd

2

bạn nhận được đối tượng nút (id) được cung cấp như một tham số

-(IBAction)ATapped:(id)sender{ 
    // Possible Cast 
    UIButton* myButton = (UIButton*)sender; 
    myButton.hidden = YES; 
} 
12

Cả Vladimir và Henrik của câu trả lời sẽ là chính xác. Đừng để kiểu 'id' làm bạn sợ. Nó vẫn là đối tượng nút của bạn, nó chỉ là trình biên dịch không biết loại đó là gì. Vì vậy, bạn không thể tham chiếu các thuộc tính trên nó trừ khi nó được đưa vào một kiểu cụ thể (câu trả lời của Henrik).

-(IBAction)ATapped:(id)sender{ 
    // Possible Cast 
    UIButton* myButton = (UIButton*)sender; 
    myButton.hidden = YES; 
} 

Hoặc bạn có thể gửi bất kỳ tin nhắn (gọi bất kỳ phương pháp) trên đối tượng, giả sử bạn biết loại (mà bạn làm, đó là một nút), mà không cần phải cast (câu trả lời Vladimir của).

-(IBAction)ATapped:(id)sender{ 
    //want some way to hide the button which is tapped 
    [sender setHidden:YES]; 
} 
+0

Cả hai phương pháp đều có thể ném một lỗi: Phương pháp của tôi có thể ném một lỗi đúc và phương pháp Vladimir có thể ném một lỗi tin nhắn –

2

Nếu bạn muốn chống đạn dàn diễn viên/tin nhắn, hãy thử này:

-(IBAction)ATapped:(id)sender{ 
    // Secure Cast of sender to UIButton 
    if ([sender isKindOfClass:[UIButton class]]) { 
     UIButton* myButton = (UIButton*)sender; 
     myButton.hidden = YES; 
    } 
} 
+0

Tôi tin rằng NSButton nên được UIButton, nhưng có, cảm ơn cho điều này. –

0

Và ... nếu bạn muốn thay đổi backgroundcolor vào một nút, mã đúng sẽ là như thế này?

[sender setBackgroundColor:(NSColor *)redColor]; 

chẳng hạn? ... bởi vì nó không hoạt động cho ...