Добавьте BarButtonItem к контроллеру навигации в Popover - PullRequest
4 голосов
/ 15 апреля 2010

Я пытаюсь добавить UIBarButtonItems в контроллер навигации, который отображается как всплывающее окно. Кажется, я не могу добавить кнопки, и мне интересно, может ли кто-нибудь мне помочь.

Вот код, который у меня есть:

UINavigationController* navigationController = [[UINavigationController alloc] initWithRootViewController:aStudentsViewController];

[navigationController setToolbarHidden:NO];
[navigationController setNavigationBarHidden:NO];

UIBarButtonItem *myButton = [[UIBarButtonItem alloc] initWithTitle:@"All Present"
                                                            style:UIBarButtonItemStylePlain
                                                           target:self
                                                           action:@selector(makeAllPresent:)];  



[navigationController.navigationItem setRightBarButtonItem:myButton];

attendancePopoverController = [[UIPopoverController alloc] initWithContentViewController:navigationController];
[attendancePopoverController setDelegate:self];


//activeBarButtonItem = sender;
[attendancePopoverController presentPopoverFromBarButtonItem:attendanceButton
                                permittedArrowDirections:UIPopoverArrowDirectionAny
                                                animated:YES];

Ответы [ 3 ]

4 голосов
/ 25 октября 2010

UINavigationController ожидает, что кнопка будет присоединена к контроллеру представления для вида, который он отображает в данный момент (кнопка специфична для каждого вида при навигации с использованием UINavigationController). UIViewController имеет свойство для navigationItem, к которому необходимо прикрепить кнопку, обычно в методе viewDidLoad отображаемого контроллера представления.

В вашем классе для aStudentsViewController определите метод viewDidLoad и установите там кнопку:

- (void)viewDidLoad {
    UIBarButtonItem *myButton = [[UIBarButtonItem alloc] initWithTitle:@"All Present"
                                                         style:UIBarButtonItemStylePlain
                                                         target:self
                                                         action:@selector(makeAllPresent:)];  
    self.navigationItem.rightBarButtonItem = myButton;
}

Вы также можете сделать это, установив rightBarButtonItem на вашем aStudentsViewController за пределами класса, но я думаю, у вас возникнут проблемы с определением доступности объекта navigationItem. Это было бы что-то вроде этого:

aStudentsViewController.navigationItem.rightBarButtonItem = myButton;

Не думаю, что это сработает, пока поповер не вызовет загрузку всего, но я не совсем уверен в этом. Лучший способ - поместить его в viewDidLoad вашего объекта aStudentsViewController.

0 голосов
/ 15 апреля 2014
     UIBarButtonItem *myButton = [[UIBarButtonItem alloc] initWithTitle:@"All Present"
                                                        style:UIBarButtonItemStylePlain
                                                       target:self
                                                       action:@selector(makeAllPresent:)];  

     UIViewController *vc = [[UIViewController alloc] initWithNibName:nil bundle:nil];
     vc.navigationItem.title = @"Your Title";
     vc.navigationItem.rightBarButtonItem =myButton;

     UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:vc];
    navigationController.navigationBar.hidden = NO;

     attendancePopoverController = [[UIPopoverController alloc] initWithContentViewController:navigationController];

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

0 голосов
/ 22 июля 2010

просто используйте в методе viewDidLoad

self.navigationItem.rightBarButtonItem = self.editButtonItem;

или как там ваша кнопка

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...