Я использую UIPopoverPresentationController
и после показа поповер несколько раз я получаю ошибкуКак работают passthroughViews в UIPopoverPresentationController?
UIPopoverPresentationController (<UIPopoverPresentationController: 0x7b259aa0>) should have a non-nil sourceView or barButtonItem set before the presentation occurs.
Самое интересное, что это еще один пример, чем я. У меня есть sourceView
, который не ноль. Мой экземпляр - 0x7b615680, а не 0x7b259aa0.
Теперь возникает вопрос, откуда этот экземпляр, и почему он используется вместо моего? Насколько я знаю, iOS управляет временем жизни сам по себе, поэтому не требуется сильная ссылка (как в iOS 7), и не должно быть проблем с управлением памятью.
Требуется ли iOS каждый раз, когда новое свойство popoverPresentationController
находится у контроллера вида, несмотря на то, что это тот же контроллер, но с разными данными? Я пробовал это, но я также получаю сообщение об ошибке через некоторое время.
Edit:
Теперь я узнал, что если я не установлю passthroughViews
то она работает без сбоев. Так что же случилось с passthroughViews
? В какой иерархии представлений есть вид в passthroughViews
?
Это делает работу с nil
, new UIView()
и new UICollectionViewCell()
, но ни с экземпляром UICollectionView
, ни с экземпляром UICollectionViewCell
...
установка также passthroughViews
в completion handler не помогло.
Кроме того, я могу показывать и отклонять popover каждый раз без сбоя, если я начну использовать popover из того же UIView
с тем же контроллером и контентом. Приложение только сбой, если я непосредственно выбираю один из представлений пересылки! Использует ли DismissViewController
неправильный путь?
Теперь я попытался использовать значение по умолчанию UIViewController
для содержимого popover, и все будет по-другому. Так что это не содержание popover.
Edit 2:
Возможно, возникает проблема, потому что вид в UICollectionView
не могут быть использованы в качестве passthroughViews
. Кто-нибудь из вас пробовал это? Я не нашел никакого решения, поэтому единственное решение для меня - не использовать passthroughViews
на iOS 8 и выше. На iOS 7 работает нормально.
Почему это работает, если не заданы 'passthrougViews'? – testing
Должен ли я переписывать свойство каждый раз, когда хочу отображать popover, потому что я могу получить доступ только к 'UIPopoverPresentationController', получив его непосредственно из представленного контроллера представления ... – testing