ios - 如何从 Cocoa Touch 框架访问窗口或 Root View Controller ?

标签 ios swift cocoa-touch

我写了一个简单的 CocoaTouch 框架,我想在 View 底部添加 UIPickerView,但是我的 View 很小而且没有特定位置,当我添加 subview UIPickerview 时,它显示但不起作用。当 UIPicker 在我的 View 中时,它就可以工作了。

我想如果我在 Root View 上添加 UIPickerView 我的问题就解决了,但是我无法访问我的框架上的 Root View 或窗口:

(lldb) po UIApplication.shared
<UIApplication: 0x7ff756e00e70>


(lldb) po UIApplication.shared.windows
0 elements


(lldb) po UIApplication.shared.keyWindow
nil

picker view outside of my view

我的框架在开发分支的 GitHub AZViewer 上可用。 以及我在示例项目提交上的问题:697eb35

最佳答案

我找到了。

当您在框架或项目中调用并创建类的实例时,viewDidLoad 然后您的实例想要访问根窗口,UIApplication.shared.keyWindow 返回 nil 因为 View Controller 还没有追加窗口。

因此您必须在 viewDidAppear 上调用并使用此方法,或者连接到触发器,如点击 button 等。

关于ios - 如何从 Cocoa Touch 框架访问窗口或 Root View Controller ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43029856/

相关文章:

ios - CLLocation 变量不发送 KVO - NSKeyValueObservingOptionNew

ios - Swift xcode 在 View 中动态添加文本输入

swift - bar Items 中的导航链接返回到 NavigationView 的顶部

ios - 具有自定义 URLSessionConfiguration 的 Google map iOS SDK

ios - Swift:导入框架但无法在其中找到类

SwiftUI 按高度百分比调整 VStack 的帧大小

ios - 如何将核心数据实体导出到 CSV 文件

iphone - UIDeviceOrientationFaceUp - 如何区分纵向和横向?

iphone - 当我需要返回这个CGPath时如何释放它

iOS - tableview 在向下滚动时禁用刷新