2010-04-03 21 views
7

में UIBarButtonItem को कैसे बदलें I संपादित किए जा सकने वाले आइटमों की एक सूची सेट अप करने का प्रयास कर रहा हूं। मेरे पास मुख्य दृश्य है, शीर्ष पर एक UINavigationBar और इसके तहत सीधे UITableView। मैं अपने "संपादन" बटन को क्लिक पर "किए गए" बटन में बदलना चाहता हूं, लेकिन मैं यह नहीं समझ सकता कि इसे कैसे किया जाए।UINavigationBar

अगर मैं इसे कोड में कर सकता हूं (यह इंटरफ़ेस बिल्डर नहीं), तो मैं इसे बदल सकता हूं, लेकिन मैं इसे भी नहीं कर सकता। मैंने [self.navigationItem] का उपयोग करके कुछ कोड देखा है, लेकिन मेरे मामले में स्वयं एक UIView है।

जब मैं नेविगेशन नहीं चाहता हूं (यह केवल एक पृष्ठ है), तो मुझे एक शीर्षक और एक बटन के साथ टूलबार चाहिए, इसलिए मुझे वास्तव में नहीं लगता है एक विकल्प है

उत्तर

15

मैं एक बटन बनाता हूं जो संपादन से पूर्ण हो सकता है। यह अधिक आईफोन विकास पुस्तक से एक टिप है।

- (void)viewDidLoad { 
    [super viewDidLoad]; 

    UIBarButtonItem *editButton = self.editButtonItem; 
    [editButton setTarget:self]; 
    [editButton setAction:@selector(toggleEdit)]; 
    self.navigationItem.leftBarButtonItem = editButton; 
} 

और विधि toggleEdit

- (IBAction)toggleEdit { 
    BOOL editing = !self.tableView.editing; 
    self.navigationItem.rightBarButtonItem.enabled = !editing; 
    if (editing) { 
    self.navigationItem.leftBarButtonItem.title = NSLocalizedString(@"Done", @"Done"); 
    //Added in the edition for this button has the same color of the UIBarButtonSystemItemDone 
    self.navigationItem.leftBarButtonItem.style = UIBarButtonItemStyleDone; 
} 
else{ 
    self.navigationItem.leftBarButtonItem.title = NSLocalizedString(@"Edit", @"Edit"); 
    //Added in the edition for this button has the same color of the UIBarButtonSystemItemDone 
    self.navigationItem.leftBarButtonItem.style = UIBarButtonItemStylePlain; 
} 
    [self.tableView setEditing:editing animated:YES]; 
} 

तो आप उनमें से किसी की जगह की जरूरत नहीं है।

+0

आह, हाँ, कि अच्छा लग रहा है की कोशिश कर सकते हैं। हालांकि, मुझे नहीं लगता कि आपको उस "अच्छी तरह से" शैली मिल जाएगी, जहां बटन थोड़ा अलग रंग है। –

+0

अब स्टाइल के बदलाव के साथ, इस कोड का बटन यूआईबारबटन सिस्टम सिस्टममेटोन के बराबर है। – wal

0

समझ गया! ऐसा लगता है कि आप topItem प्रॉपर्टी का उपयोग करके UINavigationItem पर जा सकते हैं। बस हमेशा की तरह दस्तावेज़ों के माध्यम से पढ़ना पड़ा!

4

जब आप self.editButtonItem का उपयोग करते हैं, तो आपको बटन की शैली और टेक्स्ट बदलने की आवश्यकता नहीं है, यह स्वचालित रूप से किया जाता है। उस कोड को हटाने का प्रयास करें, यह अभी भी काम करेगा :)

2

आईबी में निम्नलिखित लिंक के साथ आईबी में नेविगेशन बटन सेट करें और एडिटलेट नामक एक आउटलेट बनाएं और अपनी हेडर फ़ाइल में एडिट टॉगल नामक एक एक्शन बनाएं और आपकी विधि उतनी आसान हो इस:

-(IBAction) editToggle:(id) sender { 

if (self.tableViewOutlet.isEditing == NO) { 

    self.editOutlet.title = NSLocalizedString(@"Done", @"Done"); 
    self.editOutlet.style = UIBarButtonItemStyleDone; 
    [self.tableViewOutlet setEditing:YES animated:YES]; 

}else { 
    self.editOutlet.title = NSLocalizedString(@"Edit", @"Edit"); 
    self.editOutlet.style = UIBarButtonItemStylePlain; 
    [self.tableViewOutlet setEditing:NO animated:YES]; 

    } 
} 
0

आप इसे

[self setValue:viewController.navigationItem forKey:@"_navigationItem"]; 
[self.navigationController setNavigationBarHidden:YES animated:NO]; 
[self.navigationController setNavigationBarHidden:NO animated:NO]; 
संबंधित मुद्दे