【问题标题】:iOS 10 popoverPresentationController is nil in prepareForSegueiOS 10 popoverPresentationController 在 prepareForSegue 中为零
【发布时间】:2017-08-07 01:08:39
【问题描述】:

我正在尝试在我的 iOS 10 ipad 应用程序中居中显示一个弹出框。

我在情节提要中创建了从一个视图到另一个视图的弹出框转场。我已将 segue 的“种类”设置为“弹出框”:

然后在prepareForSegue:

if ([[segue identifier] isEqualToString:@"PopoverSegue"]) {
  UIPopoverPresentationController *popoverController = segue.destinationViewController.popoverPresentationController;
  popoverController.sourceView = self.view;
  popoverController.sourceRect = self.view.bounds;
}

然而 popoverController 是 nil。环顾四周,似乎其他人在这方面取得了成功:

How to change the size of a popover

当在故事板中创建 popover segue 时,为什么我无法在 prepareForSegue 中获取 popoverPresentationController 的任何想法?

【问题讨论】:

  • 我不知道你的架构,但它可能是缺少navaigationController。试试这个:segue.destinationViewController.navigationController.popoverPresentationController 或 segue.destinationViewController.popoverPresentationController.navigationController
  • 我没有将我的视图控制器嵌入到导航控制器中。所以没有导航控制器。据我了解,popoverPresentationController 应该在嵌入在弹出框中的视图中。只是为了好玩,我将我的视图嵌入到导航控制器中,看看这是否有所作为,但事实并非如此。 iOS 10 中的错误? iOS 10 不支持?

标签: ios objective-c segue uipopovercontroller


【解决方案1】:

您的转场 kindPopover。如果您将其更改为 Present as Popover,那么您应该会在 destinationViewController.popoverPresentationController 属性中看到值。您可能需要在情节提要属性中显式启用特征变化,以便 Present as Popover 显示为一个选项。

【讨论】:

    猜你喜欢
    • 2017-02-26
    • 2023-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多