Установка идентификатора UIBarButtonItem программно - PullRequest
4 голосов
/ 24 января 2012

У меня есть элемент UIBarButtonItem в xib-файле.Я могу установить его идентификатор как воспроизведение, пауза, прокрутка страницы и т. Д. В файле XIB.Теперь, как я могу сделать это программно?

Ответы [ 4 ]

7 голосов
/ 24 января 2012

это должно работать (в viewDidLoad)

UIBarButtonItem *barButtonItem = [[[UIBarButtonItem alloc] initWithBarButtonSystemItem:systemItem target:tar action:act] autorelease];
self.navigationItem.rightBarButton = barButtonItem;

, где systemItem - тип UIBarButtonSystemItem, который вы хотите использовать.полный список опций здесь

1 голос
/ 29 июля 2012

Если я вас правильно понял, вы хотите переключаться между различными образами системы с помощью вашей кнопки?У меня просто был похожий случай переключения между Edit и Done.Даже если это текстовые метки, ситуация почти такая же.

Единственный способ, которым мне удалось это сделать, - это создать два отдельных UIBarButtonItem экземпляра в viewDidLoad способом, описанным выше wattson12, и назначить правильный self.navigation.leftBarButton, когда это необходимо.

0 голосов
/ 20 мая 2016

У меня та же проблема, и я прочитал ответ wattson12, а затем решил другой аналогичный путь. Я не знаю, что является более эффективным.

//play button

@ IBAction func startIt (отправитель: AnyObject) {

    startThrough();

};

// кнопка воспроизведения

func startThrough () { timer = NSTimer.scheduledTimerWithTimeInterval (1, target: self, selector: Selector ("updateTime"), userInfo: nil, повторяется: true);

    let pauseButton = UIBarButtonItem(barButtonSystemItem: .Pause, target: self, action: "pauseIt");
    self.toolBarIt.items?.removeLast();
    self.toolBarIt.items?.append( pauseButton );

}

func pauseIt () {

    timer.invalidate();

    let play = UIBarButtonItem(barButtonSystemItem: .Play, target: self, action: "startThrough");
    self.toolBarIt.items?.removeLast();
    self.toolBarIt.items?.append( play );

}
0 голосов
/ 18 января 2013

Если вы установите Идентификатор на «Пользовательский» в IB, вы можете как минимум изменить заголовок:

 -(IBAction)editList:(UIBarButtonItem *)sender {
    edit=!edit;
    [imageListTable setEditing:edit animated:NO];
    if(edit){
      [sender setStyle:UIBarButtonItemStyleDone];
      [sender setTitle:@"Done"];
    }else{
      [sender setStyle:UIBarButtonItemStyleBordered];
      [sender setTitle:@"Edit"];
    }
 }
...