UIToolBar - отключить кнопки - PullRequest
11 голосов
/ 20 апреля 2009

в моем приложении есть панель инструментов, и в определенный момент я хочу отключить или включить некоторые кнопки Какой самый простой способ сделать это? Как я могу получить доступ к свойству items в 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];
}

Заранее спасибо.

Ответы [ 2 ]

14 голосов
/ 20 апреля 2009

Самый простой способ - сохранить ссылку на 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.

6 голосов
/ 29 марта 2013

Быстрое перечисление на помощь!

- (void) setToolbarButtonsEnabled:(BOOL)enabled
{
    for (UIBarButtonItem *item in self.toolbarItems)
    {
        item.enabled = !enabled;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...