UINavigationBar में एक बटन कैसे जोड़ें?


जवाबों:


294

rightbuttonएक पर सेट करने के लिए नमूना कोड NavigationBar

UIBarButtonItem *rightButton = [[UIBarButtonItem alloc] initWithTitle:@"Done" 
    style:UIBarButtonItemStyleDone target:nil action:nil];
UINavigationItem *item = [[UINavigationItem alloc] initWithTitle:@"Title"];
item.rightBarButtonItem = rightButton;
item.hidesBackButton = YES;
[bar pushNavigationItem:item animated:NO];

लेकिन आम तौर पर आपके पास NavigationControllerलिखने के लिए सक्षम होना चाहिए:

UIBarButtonItem *rightButton = [[UIBarButtonItem alloc] initWithTitle:@"Done"
    style:UIBarButtonItemStyleDone target:nil action:nil];
self.navigationItem.rightBarButtonItem = rightButton;

1
मुझे शैली पर एक चेतावनी मिलती है: पैरामीटर -> चेतावनी: सिमेंटिक इश्यू: एन्यूमरेशन टाइप 'UIBarButtonSystemItem' से अलग-अलग एन्यूमरेशन टाइप 'UIBarButtonItemStyle'
पूजो

3
यह initWithBarButtonSystemItem होना चाहिए: UIBarButtonSystemItemDone चेतावनी से बचने के लिए।
जॉर्डन

2
उदाहरण में, मुझे समझ नहीं आया कि "बार" कहां से आ रहा है। UINavigationItem के लिए डिफ़ॉल्ट शीर्ष बार संपत्ति क्या है?
aeuryzm

उत्तर में बार चर किसी भी नेविगेशन बार है जिसे नेविगेशन नियंत्रक द्वारा प्रबंधित नहीं किया जाता है। यदि आपके पास एक नेविगेशन नियंत्रक है, तो इसका स्वयं का एक नेविगेशन बार है जो इसे प्रबंधित करता है - इस मामले में, प्रत्येक दृश्य नियंत्रक जिसे आप नेविगेशन नियंत्रक पर धकेलते हैं, उसे अपने स्वयं के नेविगेशन आइटम को कॉन्फ़िगर करना चाहिए (जिसमें rightBarButtonItem को अपने स्वयं के सेट करना शामिल है संपत्ति)।
वसीली कुलकोव

वर्तमान पाठकों के लिए, मेरा मानना ​​है कि [rightbutton release]एआरसी के तहत कॉल करने का कोई कारण नहीं है (जो मूल रूप से उस समय टिप्पणी के आसपास नहीं था)।
कार्बोकेशन

20

उपरोक्त उत्तर अच्छे हैं, लेकिन मैं उन्हें कुछ और युक्तियों के साथ मांस देना चाहता हूं:

यदि आप बैक बटन के शीर्षक को संशोधित करना चाहते हैं (नेविगेशन बार के बाईं ओर स्थित तीर-वाई) तो आप इसे PREVIOUS व्यू कंट्रोलर में अवश्य करें, न कि वह जिसके लिए यह प्रदर्शित होगा। यह कहने की तरह है "हे, यदि आप कभी भी इस एक के ऊपर एक अन्य दृश्य नियंत्रक को धक्का देते हैं, तो डिफ़ॉल्ट के बजाय बैक बटन" बैक "(या जो भी) को कॉल करें।"

यदि आप एक विशेष राज्य के दौरान बैक बटन को छिपाना चाहते हैं, जैसे कि जब एक UIPickerView प्रदर्शित होता है, तो उपयोग करें self.navigationItem.hidesBackButton = YES;और याद रखें कि जब आप विशेष राज्य छोड़ते हैं तो इसे वापस सेट करें।

यदि आप किसी विशेष प्रतीकात्मक बटन को प्रदर्शित करना चाहते हैं, तो initWithBarButtonSystemItem:target:actionजैसे मान के साथ फ़ॉर्म का उपयोग करेंUIBarButtonSystemItemAdd

याद रखें, उस प्रतीक का अर्थ आप पर निर्भर है, लेकिन मानव इंटरफ़ेस दिशानिर्देशों से सावधान रहें। UIBarButtonSystemItemAdd का उपयोग करके किसी आइटम को हटाने का मतलब संभवतः आपके आवेदन को अस्वीकार कर दिया जाएगा।


11

नेविगेशन बार में कस्टम बटन जोड़ना (बटन के लिए छवि के साथ) और निर्दिष्ट कार्य विधि (शून्य) ओपन व्यू {} और)।

UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
button.frame = CGRectMake(0, 0, 32, 32);
[button setImage:[UIImage imageNamed:@"settings_b.png"] forState:UIControlStateNormal];
[button addTarget:self action:@selector(openView) forControlEvents:UIControlEventTouchUpInside];

UIBarButtonItem *barButton=[[UIBarButtonItem alloc] init];
[barButton setCustomView:button];
self.navigationItem.rightBarButtonItem=barButton;

[button release];
[barButton release];

7

नीचे दिया गया उदाहरण दाईं ओर नेविगेशन पट्टी पर "संपर्क" शीर्षक के साथ एक बटन प्रदर्शित करेगा। इसकी कार्रवाई दृश्य संपर्क से "संपर्क" नामक एक विधि को बुलाती है। इस लाइन के बिना सही बटन दिखाई नहीं देता है।

    self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Contact"
                                                                          style:UIBarButtonItemStylePlain target:self action:@selector(contact:)];;

यहां छवि विवरण दर्ज करें


3

स्विफ्ट 2 में, आप यह करेंगे:

let rightButton: UIBarButtonItem = UIBarButtonItem(title: "Done", style: UIBarButtonItemStyle.Done, target: nil, action: nil)
self.navigationItem.rightBarButtonItem = rightButton

(कोई बड़ा बदलाव नहीं) स्विफ्ट 4/5 में, यह होगा:

let rightButton: UIBarButtonItem = UIBarButtonItem(title: "Done", style: UIBarButtonItem.Style.done, target: nil, action: nil)
self.navigationItem.rightBarButtonItem = rightButton

2

निम्न का उपयोग क्यों नहीं करें: ( iPhone नेविगेशन बार पर कस्टम बैक बटन ड्रा करें )

// Add left
UINavigationItem *previousItem = [[UINavigationItem alloc] initWithTitle:@"Back title"];
UINavigationItem *currentItem = [[UINavigationItem alloc] initWithTitle:@"Main Title"];
[self.navigationController.navigationBar setItems:[NSArray arrayWithObjects:previousItem, currentItem, nil] animated:YES];

// set the delegate to self
[self.navigationController.navigationBar setDelegate:self];

0

स्विफ्ट 3

    let cancelBarButton = UIBarButtonItem(title: "Cancel", style: .done, target: self, action: #selector(cancelPressed(_:)))
    cancelBarButton.setTitleTextAttributes( [NSFontAttributeName : UIFont.cancelBarButtonFont(),
                                                          NSForegroundColorAttributeName : UIColor.white], for: .normal)
    self.navigationItem.leftBarButtonItem = cancelBarButton


    func cancelPressed(_ sender: UIBarButtonItem ) {
        self.dismiss(animated: true, completion: nil)
    }
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.