popover с использованием контроллера Uipopoverpresentation - PullRequest
0 голосов
/ 06 сентября 2018

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

Кто-нибудь может помочь?

- (IBAction)barButtonLeft:(id)sender {
    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];

    _myViewController = [storyboard instantiateViewControllerWithIdentifier:@"Sort"];

    _myViewController.modalPresentationStyle = UIModalPresentationPopover;
    self.myViewController.modalPresentationStyle = UIModalPresentationFormSheet;
    self.myViewController.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;

   self.myViewController.preferredContentSize = CGSizeMake(139, 70);


    [self presentViewController:_myViewController animated:YES completion:nil];


    UIPopoverPresentationController *popController = [_myViewController popoverPresentationController];
}

1 Ответ

0 голосов
/ 06 сентября 2018

Здесь вы используете _myViewController и self.myViewController вместе, что немного сбивает с толку, но я предполагаю, что у вас есть свойство myViewController, подкрепленное переменной экземпляра, _myViewController? Поэтому я предполагаю, что обе эти вещи на самом деле указывают на один и тот же экземпляр.

Для ясности я бы рекомендовал придерживаться одного или другого, возможно, доступа к собственности.

Если они оба указывают на один и тот же экземпляр, то, что код выше делает, устанавливает стиль представления popover, затем устанавливает стиль представления листа формы. Последний, который вы установите, будет «выигрывать», поэтому контроллер представления будет представлен в виде листа формы (на iPad это будет поле в середине экрана, на iPhone - на весь экран).

Если вы запускаете этот код на iPhone, тогда всплывающие окна по умолчанию не работают - они будут отображаться в полноэкранном режиме. Чтобы предотвратить это, вам нужно установить делегат контроллера представления popover, реализовать - (UIModalPresentationStyle)adaptivePresentationStyleForPresentationController:(UIPresentationController *)controller traitCollection:(UITraitCollection *)traitCollection; и вернуть UIModalPresentationNone.

Вы также должны установить представление источника или элемент панели кнопок на всплывающем контроллере презентации, прежде чем пытаться выполнить презентацию, иначе ваше приложение упадет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...