gpt4 book ai didi

ios - 与导航 View Controller 一起使用时,popoverPresentationController 为 nil

转载 作者:搜寻专家 更新时间:2023-11-01 06:38:45 26 4
gpt4 key购买 nike

在我将我的 View 嵌入导航 Controller 之前,这段代码工作正常

if segue.identifier == "PopupInfo" {
let controller = segue.destinationViewController as! PopoverInfoViewController
controller.popoverPresentationController!.sourceRect = sender!.frame

}

但是,在添加导航 Controller 之后,这段稍微编辑过的代码不再有效,因为 popoverPresenetationController 现在为 nil!我需要以编程方式设置它的 sourceRect 而不是 Storyboard,因为发送者是 TableView 中单元格内的控件

if segue.identifier == "PopupInfo" {
let navcontroller = segue.destinationViewController as! UINavigationController
let controller = navcontroller.topViewController as! PopoverInfoViewController
controller.popoverPresentationController!.sourceRect = sender!.frame

}

注意:controller 不是 nil,只是它的 popoverPresentationController 属性

最佳答案

您将 PopoverInfoViewController 嵌入到 UINavigationController 中。该导航 Controller 直接嵌入到 UIPopoverPresentationController 中。它现在应该有一个非零的 popoverPresentationController 属性,因为它是直接嵌入到 popover Controller 中的 View Controller 。这些类型的父 View Controller 属性的设置不会传播到第一个 subview Controller 。这就是为什么 navcontroller.popoverPresentationController 将是非 nil 而 navcontroller 的任何子级对于 popoverPresentationController 都是 nil 的原因。

你应该使用 navcontroller.popoverPresentationController!.sourceRect = sender!.frame

关于ios - 与导航 View Controller 一起使用时,popoverPresentationController 为 nil,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38281365/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com