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.