Swift 3:获取子视图控制器的上下文
我有ChildViewController
,它继承自ParentViewController
,如下所示:class ChildViewController: ParentViewController
。在ParentViewController
我试图执行下面的代码片段:Swift 3:获取子视图控制器的上下文
let controller = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "anotherViewController")
self.present(controller, animated: true, completion: nil)
我猜想它不工作,因为它是ParentViewController
和孩子是实际的屏幕上可见。是否有可能让他的背景(自我)的ChildViewController
为了使片段工作?
谢谢你的帮助。
如果我现在明白你的问题(并且那里有一个大的IF),你就无法理解继承和你的“上下文”。
如果您有2个班级,如您所说ParentViewController
和ChildViewController
其中ChildViewController
是ParentViewController
的子类。你有一个ParentViewController
的方法,你假设没有ChildViewController
的访问/上下文,虽然实例本身是一个ChildViewController
......你在这里的假设是错误的!
你ChildViewController
将继承所有的从其超ParentViewController
的方法和所有这些方法都具有自参考ChildViewController
,而不是ParentViewController
。这意味着,如果您有方法A
和方法B
,则覆盖子视图控制器中的方法B
。当父视图控制器在方法A
中调用方法B
时,将调用重写的方法。这意味着虽然在父视图控制器中调用方法A
,但方法B
将在子视图控制器上调用。因此,从来没有得到一个“孩子”的背景的问题。问题可能在于你可能无法获得作为父母的自我背景。但是,这是通过设计创造的,它完全是应该的。
所以我想回答你的问题;是的,这是可能的,而且实际上已经在为你发生了。如果您在父视图控制器的方法中放置断点并打印自己(在控制台类型“po self”中),您应该看到该类型实际上是子视图控制器。
您面临的问题很可能是其他问题的结果。请添加异常断点以查看崩溃发生的位置,并在控制台中查看日志以查看它说的内容。
请详细说明,编辑您的问题。 anotherViewController和ChildViewController/ParentViewController之间的关联是什么? “我假设它不工作......”什么?!你当前的结果是什么?你期望的结果是什么? “是否有可能让他的背景(自我)”得到它在哪里? “自我”只是一个当前实例... –
@MaticOblak我试图从ParentViewController呈现一个新的视图控制器,但是当我尝试时该应用程序崩溃。 ParentViewController是ChildViewController继承的,AnotherViewController只是另一个视图控制器,我试图显示。 – samson
那么崩溃是什么?一个从另一个继承的视图控制器不会产生崩溃,即使父母正在呈现一个孩子,反之亦然,父母提出父母或孩子表现孩子。您可以堆叠/创建任意数量的相同视图控制器的实例,并根据需要使用它们。 –