我有一个(父)视图控制器,其中包含容器视图。启动应用程序时,它首先进入父级,然后进入容器视图。在容器视图控制器中,我尝试使用诸如parentName()。changeAlpha()之类的东西-这是一个属于父级的函数...应更改父级视图上标签的alpha。
但是,当我尝试调用该函数时,它总是给我一个零错误。请记住,首先加载父视图。
层次结构:(我在括号中有每个控制器的Xcode名称,后跟属于它的文件名)
标签栏控制器(TabBarController)(有3个标签)
Tab1 (homeScreenContainer)-包含其中包含uiviewcontainer的视图控制器。另外,包含我要调用的功能。
容器视图的所有部分:
页面视图控制器(共2页,下面是第一页)(RootPageViewController)
Tab2(麻醉剂)
Tab3(麻醉剂)
此外,代码和情节提要中的唯一继承都是uiviewcontainer(并且不涉及代码继承)。
答案 0 :(得分:0)
这样做
parentName().changeAlpha()
创建另一个父对象而不是所示对象,它给出nil错误,因为应该从Stroyboard / Xib加载VC,而不是像这样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()
}
}