Добавить изображение к кнопке UIBarButtonItem

Я добавил UITabButtonItem в свой контроллер представления, используя следующий код. Не мог бы кто-нибудь сказать мне, можно ли связать с ним изображение?

UIBarButtonItem *button = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(favouriteButtonClicked:)]; 
viewController2.navigationItem.rightBarButtonItem = button; 
[button release];
[self.navigationController pushViewController:viewController2 animated:YES];

Я использую следующий код в других местах, но, как и в приведенном выше коде, я нажимаю viewcontroller на мое текущее представление, этот код не работает. Мне пришлось использовать приведенный выше код.

UIButton *button =  [UIButton buttonWithType:UIButtonTypeCustom];
[button setImage:[UIImage imageNamed:@"unselected.png"] forState:UIControlStateNormal];
[button addTarget:self action:@selector(favouriteButtonClicked:) forControlEvents:UIControlEventTouchUpInside];
[button setFrame:CGRectMake(280, 25, 30, 30)];
viewController2.navigationController.navigationItem.rightBarButtonItem = [[[UIBarButtonItem alloc] initWithCustomView:button] autorelease];

[self.navigationController pushViewController:viewController2 animated:YES];

Я не знаю, что не так, но когда я заменяю этот пользовательский код кнопки на initWithBarButtonSystemItem, он работает нормально !!!

Наконец, я разобрался с этой проблемой и разместил здесь рабочий код, но все же я не понимаю, есть ли у меня кнопка в baseviewcontroller, и я добавляю ее, как показано ниже, она не работает !!! Мне пришлось использовать код, указанный в моем принятом ответе, in viewwillappear !!

    [favButton addTarget:self action:@selector(favouriteButtonClicked:) forControlEvents:UIControlEventTouchUpInside];
     self.navigationItem.rightBarButtonItem = [[[UIBarButtonItem alloc] initWithCustomView:button] autorelease];  

Следующий код все еще не работает !!! Не знаю, что происходит.

MPMoviePlayerViewController *videoController = [[[MPMoviePlayerViewController alloc] initWithContentURL:[NSURL URLWithString:filePath]] autorelease];

UIButton* favouritebutton =  [UIButton buttonWithType:UIButtonTypeCustom];
[favouritebutton setBackgroundImage:[UIImage imageNamed:@"unselected.png"] forState:UIControlStateNormal];
[favouritebutton addTarget:self action:@selector(favouriteButtonClicked:) forControlEvents:UIControlEventTouchUpInside];
[favouritebutton setFrame:CGRectMake(280, 25, 30, 30)];
videoController.navigationItem.rightBarButtonItem = [[[UIBarButtonItem alloc] initWithCustomView:favouritebutton] autorelease]; 

[self presentMoviePlayerViewControllerAnimated:videoController];

Спасибо.

17
задан applefreak 28 July 2011 в 09:18
поделиться

2 ответа

UIButton *button =  [UIButton buttonWithType:UIButtonTypeCustom];
[button setImage:[UIImage imageNamed:@"image.png"] forState:UIControlStateNormal];
 [button addTarget:self action:@selector(methodAction:) forControlEvents:UIControlEventTouchUpInside];
[button setFrame:CGRectMake(0, 0, 49, 30)];
 navController.navigationItem.rightBarButtonItem = [[[UIBarButtonItem alloc] initWithCustomView:button] autorelease];

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

9
ответ дан 30 November 2019 в 11:30
поделиться

Великолепное решение Мэгги применительно к Свифту:

let favButton = UIButton()
favButton.setImage(UIImage(named: "unselected"), forState: .Normal)
favButton.addTarget(self, action: "favouriteButtonClicked:", forControlEvents: .TouchUpInside)
self.navigationItem.rightBarButtonItem = UIBarButtonItem(customView: favButton)
2
ответ дан 30 November 2019 в 11:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: