UINavigationBar BarButtonItem со стандартным стилем

я получил следующий код:

- (id)init {
  if (self = [super init]) {
      self.title = @"please wait";
      UIBarButtonItem *favorite = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"star.png"] style:UIBarButtonItemStylePlain target:self action:@selector(buttonFavoriteClicked:)];
      self.navigationItem.rightBarButtonItem = favorite;
  }

  return self;
}

но моя кнопка все еще походит на Кнопку с UIBarButtonItemStyleBordered alt text

существует ли способ установить кнопку со стандартным стилем в этом положении?

20
задан Glorfindel 23 June 2019 в 04:05
поделиться

3 ответа

Создайте UIButton в построителе интерфейса, сделайте так, чтобы он выглядел именно так, как вы хотите. Создайте выход для in в вашем .h:

IBOutlet UIButton * _myButton;

Затем установите его в качестве элемента кнопки правой панели, используя настраиваемый вид, который удалит границу:

self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:_myButton];

Это работает, потому что UIButton является подклассом UIView.

23
ответ дан 29 November 2019 в 23:00
поделиться

Хотя Фрэнк прав, этот код должен быть в viewDidLoad , проблема в том, как выглядят кнопки BarButtons. Если вы хотите, чтобы он выглядел по-другому, вам нужно использовать другой тип UIView. Вы можете просто добавить UIButton в UIToolbar.

-(void)viewDidLoad {
  [super viewDidLoad];
  self.title = @"please wait";
  self.navigationItem.rightBarButtonItem = [[[UIButton alloc] init] autorelease];
}

Изменить:

Извините, вам нужен простой UIBarButtonItem. Я не верю, что вы можете сделать это с помощью UINavigationBar. Вы можете попробовать добавить UserInteractionEnabled UILabel в качестве rightBarButtonItem, я не уверен, сработает это или нет.

Кажется, в настоящее время это невозможно.
sbwoodside предлагает решение .

1
ответ дан 29 November 2019 в 23:00
поделиться

Попробуйте вместо этого:

- (id)init {
  if (self = [super init]) {
      self.title = @"please wait";

      UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 25, 25)];
      [button setImage:[UIImage imageNamed:@"star.png"] forState:UIControlStateNormal];
      [button addTarget:self action:@selector(buttonFavoriteClicked) forControlEvents:UIControlEventTouchUpInside];
      UIBarButtonItem *favorite = [[UIBarButtonItem alloc] initWithCustomView:button];
      [button release];

      self.navigationItem.rightBarButtonItem = favorite;
  }

  return self;
}

Надеюсь, это поможет.

23
ответ дан 29 November 2019 в 23:00
поделиться
Другие вопросы по тегам:

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