2012-09-04 15 views
10

मैं उन वस्तुओं की एक सूची बनाने की कोशिश कर रहा हूं जिन्हें संपादित किया जा सकता है। कुछ इस तरह:NavigationBar पर BarButtonItem के पाठ को कैसे बदलें?

enter image description here

कि अंत करने के लिए

, मैं, दृश्य के शीर्ष करने के लिए एक NavigationBar जोड़ा तो XCode डिजाइनर में 2 बार बटन आइटम जोड़ा। मैंने संपादित करने के दाईं ओर दिए गए बटन के लिए बाईं ओर दिए गए बटन के लिए पहचानकर्ता सेट किया है।

जब मैं संपादन पर क्लिक करता हूं, तो मैं टेक्स्ट को पूर्ण करने के लिए बदलना चाहता हूं। मैंने विभिन्न तरीकों की कोशिश की है, उदा। btnEdit.Title = "Done", लेकिन यह बस नहीं लेता है।

मैंने कई ब्लॉग पोस्ट की सिफारिश की है .सेटटाइटल, लेकिन UIButtonBarItem में वह विधि नहीं है (कम से कम मोनो टच में)।

तो, मैं संपादन बटन का शीर्षक कैसे बदल सकता हूं?

उत्तर

14

मैंने इसे हल किया। कुंजी मैं एक सिस्टम वैल्यू (जैसे UIBarButtonSystemItemEdit) में संपादन बटन के पहचानकर्ता को सेट कर रहा था और आप उन लोगों के पाठ को नहीं बदल सकते (अब समझ में आता है)। मैंने पहचानकर्ता को वापस कस्टम और सेटिंग में बदल दिया। टाइटल ने ठीक काम किया। । बार बटन से

+0

वास्तव में सहायक।धन्यवाद :) –

+0

गॉडडड मैं इस पर एक शर्मनाक लंबे समय के लिए अटक गया था .. धन्यवाद !! –

4

इस तरह मेरे लिए काम करता है UIBarButtonItem * btnEdit; कक्षा मेम्बर में है। एच;

btnEdit = [[UIBarButtonItem alloc]initWithTitle:@"Edit" style:UIBarButtonItemStyleBordered target:self action:@selector(btnEditClicked)]; 
self.navigationItem.leftBarButtonItem = btnEdit; 
//[btnEdit release]; 

अब होगा बुलाया चयनकर्ता:

-(void)btnEditClicked 
{ 
    if([btnEdit.title isEqualToString:@"Edit"]) 
    { 
    [btnEdit setTitle:@"Done"]; 
    } 
    else 
    { 
    [btnEdit setTitle:@"Edit"]; 
    } 
} 
8

तुम क्यों navigationItem.rightbarButtonItem संपत्ति परिवर्तित करने का प्रयास नहीं करते हैं?

1.editAction में दो बटन, संपादित करें के लिए और एक किया

UIBarButtonItem*editButton=[[UIBarButtonItem alloc] initWithTitle:@"Edit" style:UIBarButtonItemStylePlain target:self action:@selector(editAction)]; 

UIBarButtonItem*doneButton=[[UIBarButtonItem alloc] initWithTitle:@"Done" style:UIBarButtonItemStylePlain target:self action:@selector(doneAction)]; 

2. और जहां आवश्यक के लिए, सेट करें अधिमानतः बदलने rightBarButtonItem की तरह:

self.navigationItem.rightBarButtonItem=doneButton; 

और यदि आपको editButton वापस

की आवश्यकता है
+0

, दोनों बटन से जुड़ी कार्रवाई काम नहीं कर रहे। –

5
if ([self.navigationItem.rightBarButtonItem.title isEqualToString:@"Edit"]) 
{ 
    self.navigationItem.rightBarButtonItem.title= @"Done"; 
} 

उम्मीद है कि इससे मदद मिलती है। खुश कोडिंग :)

+3

आप उपयोग नहीं कर सकते == तार तुलना करने के लिए। आप isEqu का उपयोग करना चाहिए alToString: इसके बजाए। – rdelmar

+0

अगर यह मदद करता है तो कृपया उत्तर स्वीकार करें, ताकि अन्य लोगों को मार्गदर्शन करने के लिए एक ही समस्या हो। धन्यवाद। –

1

नियंत्रण खींचें (सहायक संपादक का उपयोग करके), आउटलेट (इस मामले में बनाने दायर करने के लिए, अपनी तथाकथित "barButton" तो फिर, इस जोड़ें:

स्विफ्ट 3.0:

self.barButton.title = "New title" 
0

पुन बदलते `rightBarButtonItem`, किसी कारण से करने पर नीचे की तरह बटन -नया।।

self.navigationItem.leftBarButtonItem = UIBarButtonItem(title: "title", style: UIBarButtonItemStyle.plain, target: self, action: #selector(actionMethod))