2013-11-22 11 views
5

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

अब मैं चाहता हूं कि जब मैं संपादन बटन पर टैप करता हूं, बैक बटन गायब हो जाना चाहिए और बैक बटन के बजाय "+" एड बटन होना चाहिए। क्या यह संभव है? या एक ही समय में स्क्रीन पर संपादन और जोड़ें बटन प्राप्त करना संभव है?

धन्यवाद

उत्तर

7

यह काफी आसान है। अपने व्यू कंट्रोलर की setEditing:animated: विधि को ओवरराइड करें। इसे तब कहा जाता है जब संपादन/संपन्न बटन टॉगल किया जाता है (माना जाता है कि आप UIViewController से मानक editButtonItem का उपयोग कर रहे हैं)।

इस विधि में आप एक "जोड़ें" बटन बनाते हैं और इसे बाएं बार बटन आइटम बनाते हैं। यह बैक बटन छुपाएगा। "जोड़ें" बटन निकालें और बैक बटन फिर से दिखाई देगा।

- (void)setEditing:(BOOL)editing animated:(BOOL)animated { 
    [super setEditing:editing animated:animated]; 

    if (editing) { 
     // Add the + button 
     UIBarButtonItem *addBtn = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(addAction:)]; 
     self.navigationItem.leftBarButtonItem = addBtn; 
    } else { 
     // remove the + button 
     self.navigationItem.leftBarButtonItem = nil; 
    } 
} 
+0

ठीक काम करता है! धन्यवाद! –

0

पीछे तीर बटन आपका नेविगेशन नियंत्रक बटन है। आप नेविगेशन नियंत्रक पर अपने कस्टम बटन जोड़ने के लिए तो नीचे दिए गए कोड का उपयोग करना चाहते हैं अब

self.navigationItem.hidesBackButton=YES; 

: - -: तो अगर आप तो एक ही बटन गायब करना चाहते हैं तो आप नीचे दिए इस कोड को लिखने के लिए है

UIBarButtonItem *customButton = 
[[UIBarButtonItem alloc] 
          initWithTitle:@"Add"            

    style:UIBarButtonItemStyleBordered 
          target:self 
          action:@selector(yourMethod:)]; 
self.navigationItem.rightBarButtonItem = customButton; 
0

आप प्रोग्राम के रूप में वापस बटन छिपा कर सकते हैं जब आपके तालिका दृश्य संपादन शुरू होता है, और फिर अपने नेविगेशन पट्टी के बाईं ओर "जोड़ें" बटन जोड़ें।

[self.navigationItem setHidesBackButton:YES]; 

UIBarButtonItem *addButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(addButtonPressed)]; 
[self.navigationItem setLeftBarButtonItem:addButton]; 

तब, जब उपयोगकर्ता प्रेस हो गया, की जगह पर वापस बटन के साथ "जोड़ें" बटन:

एक संपत्ति है:

[self.navigationItem setHidesBackButton:NO]; 

self.navigationItem.leftBarButtonItem = self.navigationItem.backBarButtonItem; 
+0

मैं संपादन बटन के लिए एक क्रिया विधि कैसे बना सकता हूं? –

+0

'backBarButtonItem' के साथ' leftBarButtonItem' को रीसेट न करें। बस 'leftBarButtonItem' को 'nil' पर सेट करें। और बैक बटन को छिपाने की कोई ज़रूरत नहीं है। – rmaddy

+0

@ user2710855 यह अंतर्निहित है। मेरा जवाब देखें – rmaddy

2

हां, इस दृष्टिकोण है कि मैं प्रयोग किया जाता है दोनों वापस बटन और बटन जोड़ें और के लिए यह viewDidLoad में सेट:

self.backButton = self.navigationItem.leftBarButtonItem; 
self.addButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(addPressed:)]; 

अब तुम सिर्फ दप करने के लिए है एपी बटन और 'संपादन' दबाए जाने के अनुसार तालिका दृश्य स्थिति को अद्यतन करें। यहां मैं 'संपादन' बटन को 'संपन्न' में भी बदलता हूं:

- (IBAction)editBarButtonPressed:(UIBarButtonItem *)sender { 
    if (self.tableView.editing == NO) { 
     UIBarButtonItem *myButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(editBarButtonPressed:)]; 

     self.navigationItem.rightBarButtonItem = myButton; 
     [self.tableView setEditing:YES animated:YES]; 

     [self.navigationItem setLeftBarButtonItem:self.addButton animated:YES]; 
    } else { 
     UIBarButtonItem *myButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemEdit target:self action:@selector(editBarButtonPressed:)]; 

     self.navigationItem.rightBarButtonItem = myButton; 
     [self.tableView setEditing:NO animated:YES]; 

     [self.navigationItem setLeftBarButtonItem:self.backButton animated:NO]; 
    } 
} 

आशा है कि यह आपके प्रश्न का उत्तर देगा। :) ब्र denrase

+1

आप इसे कठिन तरीके से कर रहे हैं। संपादन/संपन्न बटन और मानक 'सेट एडिटिंग: एनिमेटेड:' विधि के लिए मानक 'UIViewController संपादन ButtonItem' का उपयोग करें। – rmaddy

+0

आप सही हैं, यह आसान तरीका है। :) – denrase

+0

@rmaddy से सहमत हैं; मुझे यकीन नहीं है कि आप एक और अधिक दृढ़ कदम क्यों लेना चाहते हैं। – Blaszard

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