प्रोग्राम से UINavigationBar में एक बटन कैसे जोड़ें?
प्रोग्राम से UINavigationBar में एक बटन कैसे जोड़ें?
जवाबों:
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;
[rightbutton release]
एआरसी के तहत कॉल करने का कोई कारण नहीं है (जो मूल रूप से उस समय टिप्पणी के आसपास नहीं था)।
उपरोक्त उत्तर अच्छे हैं, लेकिन मैं उन्हें कुछ और युक्तियों के साथ मांस देना चाहता हूं:
यदि आप बैक बटन के शीर्षक को संशोधित करना चाहते हैं (नेविगेशन बार के बाईं ओर स्थित तीर-वाई) तो आप इसे PREVIOUS व्यू कंट्रोलर में अवश्य करें, न कि वह जिसके लिए यह प्रदर्शित होगा। यह कहने की तरह है "हे, यदि आप कभी भी इस एक के ऊपर एक अन्य दृश्य नियंत्रक को धक्का देते हैं, तो डिफ़ॉल्ट के बजाय बैक बटन" बैक "(या जो भी) को कॉल करें।"
यदि आप एक विशेष राज्य के दौरान बैक बटन को छिपाना चाहते हैं, जैसे कि जब एक UIPickerView प्रदर्शित होता है, तो उपयोग करें self.navigationItem.hidesBackButton = YES;
और याद रखें कि जब आप विशेष राज्य छोड़ते हैं तो इसे वापस सेट करें।
यदि आप किसी विशेष प्रतीकात्मक बटन को प्रदर्शित करना चाहते हैं, तो initWithBarButtonSystemItem:target:action
जैसे मान के साथ फ़ॉर्म का उपयोग करेंUIBarButtonSystemItemAdd
याद रखें, उस प्रतीक का अर्थ आप पर निर्भर है, लेकिन मानव इंटरफ़ेस दिशानिर्देशों से सावधान रहें। UIBarButtonSystemItemAdd का उपयोग करके किसी आइटम को हटाने का मतलब संभवतः आपके आवेदन को अस्वीकार कर दिया जाएगा।
नेविगेशन बार में कस्टम बटन जोड़ना (बटन के लिए छवि के साथ) और निर्दिष्ट कार्य विधि (शून्य) ओपन व्यू {} और)।
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];
नीचे दिया गया उदाहरण दाईं ओर नेविगेशन पट्टी पर "संपर्क" शीर्षक के साथ एक बटन प्रदर्शित करेगा। इसकी कार्रवाई दृश्य संपर्क से "संपर्क" नामक एक विधि को बुलाती है। इस लाइन के बिना सही बटन दिखाई नहीं देता है।
self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Contact"
style:UIBarButtonItemStylePlain target:self action:@selector(contact:)];;
स्विफ्ट 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
निम्न का उपयोग क्यों नहीं करें: ( 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];
स्विफ्ट 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)
}