Здесь вы используете _myViewController
и self.myViewController
вместе, что немного сбивает с толку, но я предполагаю, что у вас есть свойство myViewController
, подкрепленное переменной экземпляра, _myViewController
? Поэтому я предполагаю, что обе эти вещи на самом деле указывают на один и тот же экземпляр.
Для ясности я бы рекомендовал придерживаться одного или другого, возможно, доступа к собственности.
Если они оба указывают на один и тот же экземпляр, то, что код выше делает, устанавливает стиль представления popover, затем устанавливает стиль представления листа формы. Последний, который вы установите, будет «выигрывать», поэтому контроллер представления будет представлен в виде листа формы (на iPad это будет поле в середине экрана, на iPhone - на весь экран).
Если вы запускаете этот код на iPhone, тогда всплывающие окна по умолчанию не работают - они будут отображаться в полноэкранном режиме. Чтобы предотвратить это, вам нужно установить делегат контроллера представления popover, реализовать - (UIModalPresentationStyle)adaptivePresentationStyleForPresentationController:(UIPresentationController *)controller traitCollection:(UITraitCollection *)traitCollection;
и вернуть UIModalPresentationNone
.
Вы также должны установить представление источника или элемент панели кнопок на всплывающем контроллере презентации, прежде чем пытаться выполнить презентацию, иначе ваше приложение упадет.