У меня была похожая проблема, но я не мог использовать passthroughView, потому что я хотел, чтобы мой новый поповер был поверх старого.Поэтому я использовал метод setContentViewController.
У меня есть SplitViewController, который показывает SettingsViewController в popoverController и может отображать LoginViewController в том же всплывающем окне, когда пользователь нажимает кнопку в SettingsViewController.
Этот метод находится в SplitViewController:
- (void)showLoginViewController
{
if ( ! _myPopoverController.isPopoverVisible) {
_myPopoverController = [[UIPopoverController alloc] initWithContentViewController:self.loginViewController];
[_myPopoverController presentPopoverFromRect:popoverOriginRect inView:self.view permittedArrowDirections:0 animated:YES];
}
else {
[_myPopoverController setContentViewController:self.loginViewController animated:YES];
}
}
У меня есть свойство в SplitViewController:
@property (nonatomic, strong) UIPopoverController *myPopoverController;
Важно не создавать новый экземпляр _myPopoverController, а установить ContentViewController в старом экземпляре.Рекомендуется хранить PopoverController в сильном свойстве, поскольку его нельзя освобождать, пока он виден.