2011-09-07 15 views
17

मैं कोडमैं self.editButtonItem बटन के क्लिक किए गए ईवेंट की पहचान कैसे कर सकता हूं?

leftBarButton = self.editButtonItem; 

मैं/कुछ अक्षम बदल संपादित करें बटन के क्लिक कार्रवाई के संबंध में अन्य बटन के गुणों सक्षम करना चाहते हैं का उपयोग कर संपादित करें बटन के रूप में UINavigationController के अपने बाएं बार बटन निर्धारित किया है।

मुझे कैसे पता चलेगा कि संपादन बटन दबाया गया है या नहीं?

उत्तर

31

संपादन बटन की कार्रवाई आपके दृश्य नियंत्रक को setEditing:animated संदेश भेजती है। संपादन मोड में प्रवेश या छोड़ते समय अन्य कार्यों को करने के लिए इसे अपने उप-वर्ग में ओवरराइड करें।

संपादन को संपादित करने के बाकी संक्रमण को प्रबंधित करने के लिए अंत में super कार्यान्वयन को कॉल करना सुनिश्चित करें।

+0

आपकी जानकारी के लिए धन्यवाद ... लेकिन, अगर मैं 'setEditing का उपयोग करें: animated' विधि , एनीमेशन और लाल रंग का शून्य बटन दिखाई नहीं दिया – Confused

+0

आपको अपने ओवरराइड के अंत में '[सुपर सेट एडिटिंग: एनीमेशन एनिमेटेड: एनिमेटेड]' कॉल करना होगा। – jrturton

+0

धन्यवाद .. यह काम करता है ... – Confused

1
UIBarButtonItem *barBut=[[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemEdit target:self action:@selector(doSomething)]; 


self.navigationItem.leftBarButtonItem=barBut; 

[barBut release]; 


.h 
-(void)doSomething; 

.m 

-(void)doSomething{ 

    NSLog(@"dooooooooooooo"); 
     //ur stuff 
} 

अद्यतन:

- (void)setEditing:(BOOL)editing animated:(BOOL)animated 

editButtonItem 

Returns a bar button item that toggles its title and associated state between Edit and Done. 

- (UIBarButtonItem *)editButtonItem 

Discussion 
If one of the custom views of the navigationItem property is set to the returned object, the associated navigation bar displays an Edit button if editing is NO and a Done button if editing is YES. The default button action invokes the setEditing:animated: method. 

    Availability 
    Available in iOS 2.0 and later. 

    See Also 
    @property editing 

    – setEditing:animated: 


    Declared In 
    UIViewController.h 

http://developer.apple.com/library/ios/#DOCUMENTATION/UIKit/Reference/UIViewController_Class/Reference/Reference.html

+0

धन्यवाद विजयी .. लेकिन मैं self.editButtonItem बटन – Confused

18

तो अंत में मैं समाधान मिल गया बुलाया जाएगा ...

-(void)setEditing:(BOOL)editing animated:(BOOL)animated { 

    [super setEditing:editing animated:animated]; 

    if(editing) { 
     //Do something for edit mode 
    } 

    else { 
     //Do something for non-edit mode 
    } 

} 

इस विधि को self.editButtonItem बटन के मूल व्यवहार को बदलने के साथ बुलाया जाएगा।

+0

के लिए परिदृश्य जानना चाहता हूं दूसरी विधि का कभी भी उपयोग नहीं किया जाना चाहिए। –

7

स्विफ्ट में:

@IBOutlet weak var tableView: UITableView! 

override func viewDidLoad() { 
    super.viewDidLoad() 

    .... 
    self.navigationItem.leftBarButtonItem = self.editButtonItem() 
} 

override func setEditing(editing: Bool, animated: Bool) { 
    // Toggles the edit button state 
    super.setEditing(editing, animated: animated) 
    // Toggles the actual editing actions appearing on a table view 
    tableView.setEditing(editing, animated: true) 
} 
2

स्विफ्ट में आप नीचे दिए गए तरीकों का पालन कर सकते हैं:

@IBOutlet weak var tableView: UITableView! 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     navigationItem.rightBarButtonItem = editButtonItem() 
    } 

    override func setEditing(editing: Bool, animated: Bool){ 

     super.setEditing(editing, animated: animated) 
     tableView.setEditing(editing, animated: true) 


    } 
+0

गंभीरता से, एक 'if (संपादन)' शाखा जब आप अभी 'tableView.setEditing (संपादन, एनीमेशन: एनिमेटेड)' कह सकते थे और यह दोनों मामलों के लिए काम करता है? – Alnitak

+0

यह काम करता है लेकिन तकनीकी रूप से आप सुझाव के लिए सही हैं –

+0

UIViewController के अंदर UITableView पर अच्छी तरह से काम करता है। – yoshitech

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