Как создать Popovers с раскадровками Xcode - PullRequest
15 голосов
/ 24 ноября 2011

Как я могу создать поповер на iPad Storyboard для приложения iOS 5.0+?

Уже есть одна настройка с шаблоном проекта Xcode (Utility App), но я не могу понять, какApple заставила его работать.Я пытался имитировать это, но только получил ошибки.Я даже заглянул на сайт разработчика Apple, но получил только устаревший код, который приводил к предупреждениям и ошибкам сборки.

У меня есть CBMainView и CBMasterView (за исключением уже включенного главного представления) и UIToolbar с UIToolbarButton.Мне нужно, чтобы пользователь нажал кнопку на UIToolbar, и появился мой попсовер 320x300 (CBMasterView).

Как я могу сделать это с раскадровками Xcode?Учебники, ответы, код или ссылки приветствуются!

Ответы [ 3 ]

31 голосов
/ 27 ноября 2011

До iOS 5 нужно было бы отобразить другой UIViewController, используя First Responder через модальную презентацию (и кучу кода).

Чтобы создать поповер в режиме Storyboard Xcode (iOS5+) используйте UIButton или UIToolbarButton и создайте сеанс раскадровки между кнопкой и UIViewController, который вы хотите всплывающим .

Создание перехода междуКнопка и еще один UIViewController прост.Вот как это делается:

  1. Нажмите кнопку на вашей раскадровке и Control + Перетащите с кнопки на UIViewController на выбор.Вы должны увидеть светло-голубую линию, которая проходит от кнопки до кончика мыши.
  2. После перетаскивания синей линии на выбранный ViewController появится маленькое черное меню.Это меню отображает различные варианты перехода.Выберите Popover.

    Popover Segue Menu

  3. Если все было сделано правильно, этот переход должен отображаться в Инспекторе соединений при выборе кнопки:

Use Popover instead of Modal or Push

Созданный вами UIViewController также должен иметь нестандартный размер, который меньше размера полного экрана.Вы можете установить нестандартный размер, выбрав View Controller и установив для его свойства размера значение freeform или master (320 x 850).

0 голосов
/ 14 октября 2014

Если вы используете раскадровку с IOS8, взгляните на этот пост, ответьте за него!

Как представить модальное поверх текущего представления в Swift

Короче говоря: Вы создаете отдельное всплывающее представление, задаете цвет фона с низким (или ни одного)непрозрачность и подключитесь из основного представления к всплывающему представлению с модальным переходом.

Затем в раскадровке щелкните переход, а затем в инспекторе атрибутов: измените представление на «поверх текущего контекста»возможно переход к перекрестному растворению, если вы используете непрозрачность, которая больше 0)

Самый простой способ, который я видел до сих пор!

0 голосов
/ 12 мая 2012

Я также ищу ответ на эту проблему.Я решил ее с помощью NSNotification.

Вот как:

Контроллер представления, отображающий всплывающее окно, должен зарегистрироваться для получения уведомления:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(languageSetup) name:SPVWChangeLanguage object:nil];

languageSetup - этофункция, которая будет вызываться, SPVWChangeLanguage - это строка, которую вы определите в своем контроллере всплывающих окон

Я добавил эту строку в viewDidAppear

Теперь в вашем контроллере всплывающих окон добавьте эту строкукогда пользователь выбирает что-то в таблице:

[[NSNotificationCenter defaultCenter] postNotification: [NSNotification notificationWithName: SPVWChangeLanguage object:self]];

перед тем, как закрыть всплывающее окно:

[self.popOverController dismissPopoverAnimated:YES];

Вот и все.Селектор languageSetup (в моем случае) будет вызываться.Обязательно удалите уведомление, когда ваш контроллер представления исчезнет:

[[NSNotificationCenter defaultCenter] removeObserver:self];

Я делаю это в viewWillDisappear

Я думаю, что должен быть более простой способ.Но, по крайней мере, этот работает для меня.

...