2013-07-31 4 views
6

मैं दाईं ओर एक कस्टम बटन जोड़कर नेविगेशन बार को कस्टमाइज़ करने की कोशिश कर रहा हूं। एक बनाना बहुत सीधे आगे है।एक कस्टम नेविगेशन BarButtonItem के लिए कार्रवाई और लक्ष्य जोड़ना?

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

अच्छा लगता है, सिवाय इसके कि अब मैं लक्ष्य या कार्य गुण निर्धारित नहीं कर सकता।

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

मैंने पाया कि कारण यह काम नहीं कर रहा है, क्योंकि मैं -initWithCustomView साथ UIBarButtonItem प्रारंभ: निम्नलिखित कोड कुछ नहीं करता है। सेब दस्तावेज कहता है:

इस विधि द्वारा बनाई गई बार बटन आइटम उपयोगकर्ता इंटरैक्शन के जवाब में अपने लक्ष्य की क्रिया विधि को कॉल नहीं करता है। इसके बजाए, बार बटन आइटम किसी भी उपयोगकर्ता इंटरैक्शन को संभालने के लिए निर्दिष्ट कस्टम दृश्य की अपेक्षा करता है और उचित प्रतिक्रिया प्रदान करता है।

मैं थोड़ा से उलझन में हूं कि वास्तव में सेब का क्या मतलब है। क्या मुझे कस्टम नियंत्रण या कुछ बनाना है? मैंने अभी तक यह नहीं किया है और मुझे यकीन नहीं है कि कहां से शुरू करना है।

क्या किसी को यह करने के लिए कोई सुझाव है या कस्टम नेविगेशन बार बटन सेट करने का एक वैकल्पिक तरीका है?

उत्तर दिए गए -------------------------------------------- --------------

बस UIButton के लिए इस विधि को जोड़ने के लिए किया था:

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

उत्तर

6

यह बहुत सीधी आगे है, आपको यूबिबटन के लिए लक्ष्य जोड़ने की आवश्यकता है, जो कि यूबारबटनटनम के लिए नहीं है।

यूबारबूटोनिटम के लिए जो कुछ आप चाहते हैं उसे समझाने के लिए कार्रवाई विधि के अंदर प्रतिक्रिया का जवाब है, क्योंकि दस्तावेज कहता है कि आपको यूबूटटन के लिए ऐसा करने की ज़रूरत है क्योंकि आप अपने यूआईबीबटन में कस्टम व्यू के साथ अपना यूबारबटनटोनम शुरू कर रहे हैं।

+0

धन्यवाद, यह नहीं पता था कि यह इतना आसान था। – DJSK

4

एक UIButton इस तरह की जाने वाली कार्रवाई और लक्ष्य जोड़ें:

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

UIBarButtonItem पर एक क्रिया और लक्ष्य जोड़ें:

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

यह साथ काम नहीं किया मदद मिल सकती है myButtonItem लेकिन जब मैंने इसे अपने बटन में जोड़ा तो यह काम किया! धन्यवाद! – DJSK

0
hgwhittle और मुस्तफा मैं कार्यान्वित द्वारा जवाब की मदद से

और इसे यहाँ सही काम करता है पूरा स्निप किसी

 //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"); 
} 
संबंधित मुद्दे