2010-03-19 17 views
12

पर UIBarButtonItems जोड़ने में समस्या मेरे पास UITavigationController है जिसमें UITableViewController है। मैं UIBarButtonItem के साथ नीचे टूलबार दिखाना चाहता हूं। टूलबार दिखा रहा है, लेकिन बटन दिखाई नहीं देंगे। कोई जानता है क्यों?टूलबार

- (void)viewDidLoad { 
     [super viewDidLoad]; 
    [[self navigationItem] setTitle:@"Selections List"]; 
    [[self navigationItem] setRightBarButtonItem:[[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(addProjectSearch:)] autorelease]]; 
     [[self navigationItem] setLeftBarButtonItem:[self editButtonItem]]; 
    [[super tableView] setDataSource: self]; 
    [[super tableView] setDelegate: self]; 

    //Toolbar 
    UIBarButtonItem * logoutButton = [[[UIBarButtonItem alloc] initWithTitle:@"Log out" style:UIBarButtonItemStylePlain target:self action:@selector(logOut:)]autorelease]; 
    NSMutableArray * arr = [NSMutableArray arrayWithObjects:logoutButton, nil]; 
    [[self navigationController] setToolbarHidden: NO animated:YES]; 
    [[self navigationController] setToolbarItems:arr animated:YES]; 
    } 
+0

मुझे यह सही समस्या है, और प्रस्तावित समाधान मेरे लिए काम नहीं कर रहे हैं। शायद कोई इस बात पर टिप्पणी कर सकता है कि कौन सी चीजें गलत हो सकती हैं और क्या काम कर रही है। विशेष रूप से: टॉम के सेट-ऑन-वीसी, ओलिवियर के इन-व्यूडिडएपियर काम नहीं करते थे। एफडब्ल्यूआईडब्ल्यू, मेरा टूलबार प्रकट होता है, लेकिन बिना बटन के। (हां मैंने setToolbarItems कहा:!) – Olie

+0

** संपादित करें/अनुवर्ती: ** मेरी गलती। टॉम और ओलिवियर के उत्तरों को दोबारा पढ़ना और उनकी सिफारिशों को लागू करने से मुझे सावधानीपूर्वक मिल गया और चल रहा था। दोनों को +1। – Olie

उत्तर

14

मुझे एप्पल के documentation में पता चला है कि यूआईटीयूएलबार को समझाते हुए छोटे पैराग्राफ हैं। इस पैराग्राफ में एक बहुत ही छोटी वाक्य बताई गई है: "[..] प्रदर्शित होने पर, यह टूलबार टूलबार से आइटम्स का वर्तमान सेट प्राप्त करता है सक्रिय दृश्य नियंत्रक की संपत्ति [..]" लेकिन वे पहले उस दृश्य को समझा नहीं देते इन बटनों को प्राप्त करने के लिए सक्रिय होना चाहिए। तो इसका मतलब है कि UIToolBar अपने बटन को पुनर्प्राप्त करने के लिए तैयार है DidAppear और देखने पर नहीं DidLoad संदेश।

- (void)viewDidAppear:(BOOL)animated { 
    [[self tableView] reloadData]; 

    [[self navigationController] setToolbarHidden: NO animated:YES];  
    UIBarButtonItem * logoutButton = [[[UIBarButtonItem alloc] initWithTitle:@"Log out" style:UIBarButtonItemStylePlain target:self action:@selector(logOut:)]autorelease]; 
    NSMutableArray * arr = [NSMutableArray arrayWithObjects:logoutButton, nil]; 
    [self setToolbarItems:arr animated:YES]; 

    [super viewDidAppear:animated]; 
} 
+0

हाँ! setToolbarHidden, setToolbarItems, और [super viewDidAppear:] को कॉल किया जाना चाहिए। – Nianliang

+0

क्या हम UIBarButtonItem की स्थिति सेट कर सकते हैं –

0

शायद तुम इंटरफ़ेस बिल्डर का उपयोग कर सकते से बचने के लिए, लेकिन यह धीमी

+0

लेकिन मैं उस UIToolBar को कहां जोड़ूं। मैं इसे अपने UITableViewController –

0

http://developer.apple.com/iphone/library/documentation/UIKit/Reference/UINavigationController_Class/Reference/Reference.html

"नेविगेशन नियंत्रक वस्तु अब अपने दृश्य पदानुक्रम में एक वैकल्पिक उपकरण पट्टी का प्रबंधन करता है हो जाएगा। जब दिखाया गया है, इस टूलबार सक्रिय दृश्य नियंत्रक की टूलबार इटम्स संपत्ति से आइटम का वर्तमान सेट प्राप्त करता है। "

क्या आपने अपने टेबलव्यू के लिए UITableViewController को उपclassing और उपयुक्त टूलबार के साथ सेट अप करने की कोशिश की है संपत्ति?

[[self navigationController] setToolbarItems:arr animated:YES];

इस के साथ

:

+0

में नहीं जोड़ सका, मैं UITableViewController को उप-वर्गीकृत कर रहा हूं। "उपयुक्त टूलबार इटिम" के साथ आपका क्या मतलब है?मैंने इसके साथ भी कोशिश की है: [स्वयं सेट टूलबार इटम्स: एआर एनिमेटेड: हाँ]; लेकिन वह अभी भी काम नहीं करता है। –

+0

मैंने इस जवाब को वोट दिया है क्योंकि यह मुझे लगता है जैसे ओलिवियर ने दस्तावेज़ीकरण पढ़ा है और अभी भी एक समस्या है - यही कारण है कि वह सलाह के लिए यहां आया है। इसके अलावा, जब यह ओलिवियर की मदद नहीं करता, तो टॉम के जवाब ने मेरी समस्या हल कर दी। – Matt

45

इस लाइन की जगह

[self setToolbarItems:arr animated:YES];

सामान्य तौर पर, आप अपने UINavigationController पर प्रत्येक व्यक्ति को देखने के नियंत्रक है कि आप धक्का पर toolbarItems स्थापित करना चाहिए, और नहीं अपने आप।

+0

अब यह मेरे लिए क्यों काम नहीं करता है, यह सही जवाब प्रतीत होता है ... –

0

मैं एक दृश्य नियंत्रक, जो UITableViewController का एक उपवर्ग है बनाया है, और मैं उपकरण पट्टी निम्न कार्य करके काम कर मिल गया है: तो फिर

self.navigationController.toolbar.barStyle = UIBarStyleBlackTranslucent; 

NSArray* toolbarItems = [NSArray arrayWithObjects: button1, 
                button2, 
                button3, 
                nil]; 

[self setToolbarItems:toolbarItems animated:NO]; 

:

viewDidLoad में , क्योंकि मैं केवल इस स्क्रीन पर टूलबार चाहता हूं, मैंने इसे देखने के लिए जोड़ा है WillAppear:

[self.navigationController setToolbarHidden:NO animated:YES]; 

और फिन सहयोगी, मैं viewWillDisappear में फिर टूलबार को छिपाने:

[self.navigationController setToolbarHidden:YES animated:YES]; 

यह "पाठ" बटन, आइकन और कस्टम आइकन में बनाया के साथ मेरे लिए काम करता है।

संबंधित मुद्दे