我有一个(父)视图控制器,其中有一个容器视图。当应用程序启动时,它首先进入父级,然后进入容器视图。在容器视图控制器中,我尝试像parentName()。changeAlpha() - 这是一个属于父...的函数,它应该改变父视图上标签的alpha。
但是,一旦我尝试调用该函数,它就会一直给我一个nil错误。请记住父视图正在加载第一件事。
层次结构:(我有每个控制器的Xcode名称,后跟括号中属于它的文件名)
标签栏控制器(TabBarController)(有3个标签)
Tab1(homeScreenContainer) - 包含一个带有uiviewcontainer的视图控制器。还包含我试图调用的函数。
容器视图的所有部分:
Tab2(不相关)
续(Aarlvenh)
此外,代码和故事板中唯一的继承只是uiviewcontainer(并且没有涉及代码继承)。
这样做
parentName().changeAlpha()
创建除了显示的父对象之外的另一个父对象,并且它给出了nil错误,因为VC应该从Stroyboard / Xib加载而不是像这个parentName()
,除非它是以编程方式创建的,你真正需要的是查询它的窗口,假设为父是你可以做到这一点的窗口的rootVC
if let tab = UIApplication.shared.keyWindow?.rootViewController as? UITabBarController {
print("Inside Tap")
if let realParent = tab.viewControllers![0] as? ParentVC {
print("Inside Parent")
realParent.changeAlpha()
}
}