У меня есть кнопка, которая приводит к popOver, созданному в Interface Builder. PopOver закрывается, когда я нажимаю где-то за его пределами, но я также хотел бы реализовать кнопку внутри popOver, которая делает это.iOS: увольнение popOver, сгенерированное с помощью интерфейса Builder с кнопкой внутри popOver
Я нашел решение от Giorgio Barchiesi, относящееся к 2011 году, однако я не смог его реализовать. Вот его решение:
В файле реализации контроллера представления источника:
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([[segue destinationViewController] isKindOfClass:[MyDestViewController class]]) {
MyDestViewController* viewController = (MyDestViewController*)[segue destinationViewController];
UIStoryboardPopoverSegue* popoverSegue = (UIStoryboardPopoverSegue*)segue;
[viewController setPopoverController:[popoverSegue popoverController]];
}
}
В заголовочном файле контроллера представления назначения:
@property (weak, nonatomic) UIPopoverController* popoverController;
В файле реализации в целях назначения контроллер:
@synthesize popoverController;
Тот же файл, когда захотите уволить пользователя:
[popoverController dismissPopoverAnimated:YES];
Я мог бы вызвать последнюю функцию при нажатии кнопки. Моя проблема заключается в том, что XCode дает мне ошибку на [viewController setPopoverController:[popoverSegue popoverController]]
линии: ARC Семантический Выпуск: Нет известный метод класса для выбора «setPopOverController»
Что я пропускаю реализовать?
спасибо, но я не спросил, как прекратить отклонять popOver, когда пользователь выталкивает его за пределы. вместо этого я спросил, как уволить его с помощью кнопки внутри popOver? – user2014551
Вы вызываете метод наподобие: [popoverController rejectPopoverAnimated: YES]; в методе выбора кнопки, например - (IBAction) buttonPressed {[popoverController rejectPopoverAnimated: YES]; } Неужели это не работает? – Amit
Да, я. Проблема в том, что popoverController не может уволить только самого себя. Ему нужна ссылка из его корневого представления, и это был пользователь chandan, который пытался решить, но я, должно быть, что-то забыл, потому что он не работает ... – user2014551