2009-04-20 18 views
11

अक्षम करें मेरे पास एक टूलबार है और एक निश्चित बिंदु पर मैं कुछ बटन अक्षम या सक्षम करना चाहता हूं। ऐसा करने का सबसे आसान तरीका क्या है? मैं UIToolbar की वस्तुओं की संपत्ति कैसे प्राप्त कर सकता हूं?UIToolBar - मेरे ऐप में

-(void)addToolbar { 
    NSMutableArray *buttons = [[NSMutableArray alloc] init]; 

    //Define space 
    UIBarButtonItem *flexibleSpaceItem; 
    flexibleSpaceItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem: UIBarButtonSystemItemFlexibleSpace target:nil action:NULL]; 

    //Add "new" button 
    UIBarButtonItem *newButton = [[UIBarButtonItem alloc] 
            initWithTitle:@"New" style:UIBarButtonItemStyleBordered target:self action:@selector(new_clicked)]; 
    [buttons addObject:newButton]; 
    [newButton release]; 

    //Add space 
    [buttons addObject:flexibleSpaceItem]; 

    //Add "make active" button 
    UIBarButtonItem *activeButton = [[UIBarButtonItem alloc] 
            initWithTitle:@"Make Active" style:UIBarButtonItemStyleBordered target:self action:@selector(make_active_clicked)]; 
    [buttons addObject:activeButton]; 
    [activeButton release]; 

    [buttons addObject:flexibleSpaceItem]; 

    //Add "edit" button 
    UIBarButtonItem *editButton = [[UIBarButtonItem alloc] 
            initWithTitle:@"Edit" style:UIBarButtonItemStyleBordered target:self action:@selector(edit_clicked)]; 
    [buttons addObject:editButton]; 
    [editButton release]; 

    [flexibleSpaceItem release]; 

    [toolBar setItems:buttons]; 
    [buttons release]; 
} 

अग्रिम धन्यवाद:

यहाँ मेरी कोड है।

उत्तर

14

एक आसान चर के रूप में UIBarButtonItem के संदर्भ को सहेजने का सबसे आसान तरीका है।

# header file 
UIBarButtonItem *editButton; 

फिर अपने कोड किसी भी घटना विधि में कहीं भी

# .m file 
editButton = [[UIBarButtonItem alloc] 
       initWithTitle:@"Edit" 
       style:UIBarButtonItemStyleBordered 
       target:self 
       action:@selector(edit_clicked)]; 
[buttons addObject:editbutton]; 

हो जाता है अब, बटन को निष्क्रिय करने के रूप में सरल है के रूप में:

editButton.enabled = NO; 

इसके अलावा release यह अब न तुरंत, इस वर्ग के बाद से बटन ऑब्जेक्ट का मालिक है। तो release इसके बजाय dealloc विधि में।

+0

आप टूलबार पर उपयोगकर्ता इंटरैक्शन को अक्षम भी कर सकते हैं (userInteractionEnbaled = NO) – jjxtra

6

Fast enumeration बचाव के लिए!

- (void) setToolbarButtonsEnabled:(BOOL)enabled 
{ 
    for (UIBarButtonItem *item in self.toolbarItems) 
    { 
     item.enabled = !enabled; 
    } 
}