2013-07-31 26 views
6

Tôi đang cố gắng tùy chỉnh Thanh Điều hướng bằng cách thêm một nút tùy chỉnh vào rightBarButtonItem. Tạo một cái khá thẳng về phía trước.Thêm hành động và nhắm mục tiêu vào Thanh Điều hướngButtonItem tùy chỉnh?

UIImage *myImage = [UIImage imageNamed:@"menu-icon.png"]; 

UIButton *myButton = [UIButton buttonWithType:UIButtonTypeCustom]; 
[myButton setFrame:CGRectMake(0, 0, myImage.size.width, myImage.size.height)]; 
[myButton setBackgroundImage:myImage forState:UIControlStateNormal]; 

UIBarButtonItem *myButtonItem = [[UIBarButtonItem alloc] initWithCustomView:myButton]; 

[navItem setLeftBarButtonItem:myButtonItem animated:YES]; 

Có vẻ tốt, ngoại trừ bây giờ tôi không thể đặt thuộc tính mục tiêu hoặc hành động. Mã sau đây không có gì:

myButtonItem.target = myTarget; 
myButtonItem.action = @selector(myButtonAction); 

Tôi thấy rằng lý do không hoạt động là vì tôi đã khởi tạo UIBarButtonItem bằng -initWithCustomView. Tài liệu hướng dẫn về táo nói:

Mục nút thanh được tạo bởi phương pháp này không gọi phương thức hành động của mục tiêu của nó để phản hồi tương tác của người dùng. Thay vào đó, mục nút thanh mong đợi chế độ xem tùy chỉnh được chỉ định để xử lý mọi tương tác của người dùng và cung cấp phản hồi thích hợp.

Tôi hơi bối rối bởi những gì chính xác táo có nghĩa là do đó. Tôi có nên tạo ra một điều khiển tùy chỉnh hay gì đó không? Tôi chưa thực sự làm điều đó và tôi không chắc bắt đầu từ đâu.

Có ai có bất kỳ đề xuất nào về cách thực hiện việc này hay cách khác để thiết lập Nút thanh điều hướng tùy chỉnh không?

TRẢ LỜI -------------------------------------------- --------------

Chỉ cần có thêm phương pháp này để các UIButton:

[myButton addTarget:myTarget action:@selector(myButtonAction) forControlEvents:UIControlEventTouchUpInside]; 

Trả lời

6

Khá thẳng về phía trước, bạn cần thêm mục tiêu cho uibutton không phải cho uibarbuttonitem.

Để giải thích thêm những gì bạn muốn cho uibarbuttonitem, hãy trả lời trong phương thức hành động, vì tài liệu nói rằng bạn cần làm điều đó cho uibutton khi bạn đang khởi tạo uibarbuttonitem với chế độ xem tùy chỉnh trong trường hợp uibutton của bạn.

+0

Cảm ơn, đã không nhận ra nó là đơn giản. – DJSK

4

Thêm một hành động và mục tiêu để một UIButton như thế này:

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

Thêm hành động và nhắm mục tiêu đến UIBarButtonItem như sau:

[myBarButtonItem setAction:@selector(handleBarButtonTap)]; 
[myBarButtonItem setTarget:aTarget];
+0

Nó đã không làm việc với myButtonItem nhưng khi tôi thêm nó vào myButton nó đã làm việc! Cảm ơn! – DJSK

0

Với sự giúp đỡ của câu trả lời bằng hgwhittleMustafa tôi thực hiện và nó hoạt động hoàn hảo đây là ảnh chụp hoàn toàn có thể giúp đỡ một ai đó

 //Create ImageButton 
     UIImage *shareBtnIcon = [UIImage imageNamed:@"dummy_share_icon_22"]; 

     UIButton *shareButton = [UIButton buttonWithType:UIButtonTypeCustom]; 
     [shareButton setFrame:CGRectMake(0, 0, shareBtnIcon.size.width, shareBtnIcon.size.height)]; 
     [shareButton setBackgroundImage:shareBtnIcon forState:UIControlStateNormal]; 

     [shareButton addTarget:self action:@selector(shareButtonClicked:) forControlEvents:UIControlEventTouchUpInside]; 

     //Create BarButton using ImageButton 
     UIBarButtonItem *shareBarBtn = [[UIBarButtonItem alloc] initWithCustomView:shareButton]; 

     //Add BarButton to NavigationBar 
     self.navigationItem.rightBarButtonItems = [[NSArray alloc] initWithObjects:shareBarBtn, nil]; 

//method for share butto click 
-(void) shareButtonClicked:(UIButton*)sender 
{ 
    NSLog(@"you clicked on share button %ld"); 
} 
Các vấn đề liên quan