2011-10-10 47 views
14

Tôi là người mới sử dụng iOS. Tôi có một nút thanh điều hướng mà khi nhấp vào nên thực hiện một chức năng của riêng tôi. Cách tốt nhất để làm điều đó là gì?Thêm công cụ chọn tùy chỉnh vào UIBarButtonItem

UIBarButtonItem *doneBarButtonItem=[[UIBarButtonItem alloc] init]; 
[email protected]"Done"; 
self.navigationItem.rightBarButtonItem = doneBarButtonItem; 
[doneBarButtonItem release]; 

Trả lời

42

Một cách là init với mục tiêu và hành động:

UIBarButtonItem *buttonHello = [[UIBarButtonItem alloc] initWithTitle:@"Say Hello"  
    style:UIBarButtonItemStyleBordered target:self action:@selector(sayHello:)]; 

Một cách khác là để thiết lập mục tiêu và hành động sau khi bạn tạo ra nó

[buttonHello setTarget:self]; 
[buttonHello setAction:@selector(sayHello:)]; 

mục tiêu là trường hợp của đối tượng sẽ được gọi. Trong trường hợp của bản thân, phương thức này sẽ nằm trong trường hợp này của đối tượng.

Hành động là phương thức sẽ được gọi. Thông thường, bạn trang trí nó với IBAction để gợi ý cho nhà thiết kế rằng đó là một hành động. Nó biên dịch để vô hiệu.

- (IBAction)sayHello:(id)sender 
{ 
    // code here 
} 
+0

Cảm ơn bạn vì '[buttonHello setTarget: self];' and '[buttonHello setAction: @selector (sayHello :)];' .... điều này đã cứu tôi !! – Greg

+0

Cảm ơn câu trả lời được viết đẹp mắt này, Bryan; có khả năng viết lại phần còn lại của tài liệu API của Apple theo cách này không? ;-) – Slowburner

2

Có một loạt các cuộc gọi init khác nhau mà bạn có thể sử dụng, được liệt kê trong Instance Phương pháp phần ở đây:

http://developer.apple.com/library/ios/#documentation/uikit/reference/UIBarButtonItem_Class/Reference/Reference.html

- (id)initWithBarButtonSystemItem:(UIBarButtonSystemItem)systemItem target:(id)target action:(SEL)action 
- (id)initWithCustomView:(UIView *)customView 
- (id)initWithImage:(UIImage *)image style:(UIBarButtonItemStyle)style target:(id)target action:(SEL)action 
- (id)initWithTitle:(NSString *)title style:(UIBarButtonItemStyle)style target:(id)target action:(SEL)action 

Ngoài ra, bạn có thể kiểm tra một mẫu trong sử dụng ở đây :

How to set target and action for UIBarButtonItem at runtime

Hy vọng điều này sẽ hữu ích!

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