iphone UIBarButtonItem initWithImage - не подсвечивается при нажатии - PullRequest
1 голос
/ 31 августа 2010

Я могу создать подобную кнопку, и действие отлично работает:

UIBarButtonItem *myBtn = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"image.png"] style:UIBarButtonItemStyleBordered target:self action:@selector(myMethod:)];

Тем не менее, при нажатии кнопки на экране подсветка не отображается. Я перепробовал все. Разве вы не можете получить подсветку UIBarButtonItem с пользовательским изображением?

Ответы [ 2 ]

3 голосов
/ 01 сентября 2010

Попробуйте что-то вроде этого (setShowsTouchWhenHighlighted: это то, что вы ищете):

UIImage* image = [UIImage imageNamed:@"image.png"];
CGRect frame = CGRectMake(0, 0, image.size.width, image.size.height);
UIButton* button = [[UIButton alloc] initWithFrame:frame];
[button setBackgroundImage:image forState:UIControlStateNormal];
[button addTarget:self action:@selector(myMethod:) forControlEvents:UIControlEventTouchUpInside];
[button setShowsTouchWhenHighlighted:YES];
UIBarButtonItem* barButtonItem = [[UIBarButtonItem alloc] initWithCustomView:button];
[self.navigationItem setRightBarButtonItem:barButtonItem];
[barButtonItem release];
[button release];
0 голосов
/ 05 ноября 2010

Может быть, что-то немного проще для большинства новичков:

Код для создания кнопок

UIBarButtonItem *editButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Edit" style:UIBarButtonItemStyleBordered target:self action:@selector(editCells:)]; 
self.navigationItem.rightBarButtonItem = editButtonItem;
[editButtonItem release];

Код для обработчика действий

- (void)editCells:(id)sender {
    UIBarButtonItem *buttonItem = (UIBarButtonItem *)sender;

    if (self.tableView.editing == YES) {
        self.tableView.editing = NO;
        buttonItem.title = @"Edit";
        buttonItem.style = UIBarButtonItemStyleBordered;        
    }
    else {
        self.tableView.editing = YES;
        buttonItem.title = @"Done";
        buttonItem.style = UIBarButtonItemStyleDone;
    }
}

Объяснение

Довольно прямо.Я создаю кнопку программно и добавляю ее в панель навигации видов.Конечно, это работает только при использовании NavigationController.

Когда пользователь нажимает кнопку, чтобы начать редактирование связанного представления таблицы, функция проверяет состояние редактирования таблицы и изменяет текст кнопки, а такжестиль.

...