ipad, как управлять popover представленным с barbuttonitem? - PullRequest
0 голосов
/ 31 марта 2012

Я знаю, что UIPopovercontroller не сохраняет себя при представлении. Так что мы должны сохранить ссылку на него, чтобы сохранить его живым

И при нажатии на barbuttonitem, который представляет всплывающее окно, он автоматически не удаляетpopover, он фактически снова и снова будет отображаться поверх него снова и снова, когда вы нажимаете кнопку и не делаете ничего особенного, чтобы проверить, не было ли уже всплывающего окна.но я думаю, что это ужасно ...

Есть ли лучшая практика?

1 Ответ

0 голосов
/ 04 апреля 2013

Я использую всплывающие окна с ARC и не должен был делать ничего особенного, чтобы поддерживать счетчик ссылок.Пока поповер находится на экране, есть сильные ссылки на него, чтобы сохранить его.У вас есть случай неудачи, который вы можете опубликовать?

Я считаю, что вторая проблема, которую вы упомянули, более интересная: нажатие на barButtonItem многократно создает несколько экземпляров всплывающего окна.Их трудно увидеть, потому что они складываются друг на друга.Но тени вокруг всплывающего окна становятся темнее с каждым добавленным экземпляром.Настоящая подсказка к проблеме заключается в том, что каждый экземпляр должен быть закрыт по отдельности.

Одним из решений является отключение / включение UIBarButtonItem при входе и выходе из всплывающего окна.Это хорошо сработало для меня, но немного утомительно.(Мне пришлось поместить код в два места - одно в моем собственном распределителе, а другое - в делегате popoverController - popoverControllerDidDismissPopover: метод, для случая, когда пользователь щелкнул за пределами всплывающего окна, чтобы закрыть его.)что (превосходный) курс Stanford CS193P решает эту проблему, скрывая кнопку во время отображения всплывающего окна.

Поведение iOS на самом деле похоже на ошибку.Щелчок в barButtonItem - вне всплывающего окна , и, если представление barButtonItem не включено в массив сквозного всплывающего окна, предполагается (согласно документу) отклонить всплывающее окно.Но этого не произошло, и Apple не спросила меня.

Я только что проверил и обнаружил, что массив passthrough изначально равен nil, поэтому удаление представления barButtonItem из этого массива не вариант.Убирайся.

...