2009-04-20 30 views
11

trong ứng dụng của tôi Tôi có một thanh công cụ và tại một thời điểm nhất định mà tôi muốn tắt hoặc bật một số nút. Cách dễ nhất để làm như vậy là gì? Làm thế nào tôi có thể truy cập các thuộc tính của UIToolbar?UIToolBar - tắt các nút

Đây là mã của tôi:

-(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]; 
} 

Cảm ơn bạn trước.

Trả lời

14

Cách đơn giản nhất là lưu tham chiếu đến UIBarButtonItem làm biến mẫu.

# header file 
UIBarButtonItem *editButton; 

Sau đó, mã của bạn trở nên

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

Bây giờ bất cứ nơi nào trong bất kỳ phương pháp dụ, vô hiệu hóa các nút cũng đơn giản như:

editButton.enabled = NO; 

Cũng không release nó ngay lập tức, vì lớp này ngay bây giờ sở hữu đối tượng nút. Vì vậy, thay vào đó, hãy release phương pháp dealloc.

+0

Bạn cũng có thể tắt tương tác người dùng trên thanh công cụ (userInteractionEnbaled = NO) – jjxtra

6

Fast enumeration để giải cứu!

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