使用Uipopoverpresentation控制器的popover

时间:2018-09-06 08:16:44

标签: ios objective-c

以下代码应该弹出一个视图,并且应该按照我的代码自定义视图大小来自定义视图大小,但是当我运行它时,我看到它不是自定义的。

有人可以帮忙吗?

- (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 :(得分:0)

您在这里一起使用_myViewControllerself.myViewController,这有点令人困惑,但是我假设您拥有一个由实例变量{{1}支持的属性myViewController。 }?因此,我假设这两件事实际上都指向同一个实例。

为清楚起见,我建议您坚持使用一个或另一个属性访问权限。

如果它们都指向同一个实例,则上面的代码正在执行的操作是设置弹出显示样式,然后设置表单显示样式。您设置的最后一个将“获胜”,因此视图控制器将显示为表单表(在iPad上,这将是屏幕中间的一个框,在iPhone上,它将是全屏的)。

如果您在iPhone上运行此代码,则默认情况下,弹出式窗口无论如何都不起作用-它们将全屏显示。为防止这种情况,您需要为弹出式显示控件设置一个委托,实现_myViewController,然后返回- (UIModalPresentationStyle)adaptivePresentationStyleForPresentationController:(UIPresentationController *)controller traitCollection:(UITraitCollection *)traitCollection;

在尝试进行演示之前,还必须在弹出式演示文稿控制器上设置源代码视图或工具栏按钮项,否则应用程序将崩溃。