0

У меня есть немного уникальная ситуация, касающаяся popovers. Я только что закончил добавление третьего элемента навигации (UIBarButtonItem), который я должен был создать программно, поскольку раскадровка позволит только двум навигационным элементам. Эта новая кнопка в настоящее время переходит к контроллеру представления с использованием идентификатора, установленного в раскадровке. Все работает так, как есть, но мне нужно переместить popover вместо толчка. Поскольку эта кнопка была создана в коде, я не могу установить якорь для popover в раскадровке. Есть ли способ установить тип segue для перехода в раскадровку и программным образом установить его якорь с помощью идентификатора? Или будет ли popover полностью реализован в коде? Ниже приводится то, что у меня есть для новой кнопки и текущего сегмента.Настройка popover segue программно с использованием идентификатора из раскадровки

Кнопка Initialized
self.categoryButtonItem = [[UIBarButtonItem alloc]initWithTitle:NSLocalizedString(@"Cat", @"categories button") style:UIBarButtonItemStyleDone target:self action:@selector(categoryButtonDidPress:)]; 
self.navigationItem.rightBarButtonItems = [self.navigationItem.rightBarButtonItems arrayByAddingObject:self.categoryButtonItem]; 
Текущий Segue установлен Нажмите на раскадровке.
-(void) categoryButtonDidPress:(UIBarButtonItem *)sender { 
    [self performSegueWithIdentifier:@"categorySegue" sender:nil]; 
} 

ответ

1

Код, показанный на рисунке ниже, показывает, как включить приложение в приложение в соответствии с приведенными выше ограничениями. Эта функция несовместима с iPhone. Он может быть совместим с iPhone 6 Plus (учитывая его возможности для разделенных видов). В xcode6 идентификатор контроллера просмотра был удален и заменен идентификатором раскадровки (и, возможно, в более поздних версиях). Это важно при создании экземпляра контроллера представления с идентификатором и не забудьте создать свойство для UIPopOverController. Помните, что это всего лишь отправная точка для любых новых разработчиков.

свойство
@property (nonatomic, strong) UIPopOverController *buttonPopOverController; 
метод
-(void) categoryButtonDidPress:(UIBarButtonItem *)sender { 
    UIStoryboard *storyboard = self.storyboard; 
    CategoryViewController *categoryVC = [storyboard instantiateViewControllerWithIdentifier:@"CategoryViewController "]; 
    self.buttonPopOverController = [[UIPopoverController alloc] initWithContentViewController:categoryVC]; 
    [self.buttonPopOverController presentPopoverFromBarButtonItem:self.categoryButtonItem permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES]; 

} 
Смежные вопросы