![](/img/trans.png)
[英]How to show ViewController from a non-ViewController helper class?
[英]How get visible / current viewcontroller in non-viewcontroller class? Swift
我有信息框对象-“信息视图”。 我想将此视图附加到当前的VC视图中,有时直接在VC类中,有时在VC类之外,例如。 在我的框架中。
我不想总是在方法参数中传递当前的VC,例如
class InfoView: UIView {
/* Initialization methods */
func show(viewController: ViewController) {
/* some code */
viewController.addSubview(self)
}
}
我想直接在我的“信息视图”类中获取当前的VC:
class InfoView: UIView {
/* Initialization methods */
func show() {
let viewController = /* need get current VC */
/* some code */
viewController.addSubview(self)
}
}
UIApplication.sharedApplication()
rootViewController
属性返回当前VC,但在转换后此VC不会更改。
如何获得需要的最新VC?
rootViewController
是一个很好的方法。 您的根VC可能是导航控制器,因此您可以使用以下代码:
func currentVC() -> UIViewController? {
guard let navigationController = UIApplication.sharedApplication().keyWindow?.rootViewController as? UINavigationController else { return nil }
return navigationController.viewControllers.last
}
嗨,Artem和DeyaEldeen,如果我没有记错,您想访问情节提要上的视图控制器。
您可以获取任何视图控制器的实例步骤
1在其“自定义类”属性中为视图控制器设置情节提要ID。
2在您的信息视图类中
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
MyViewcontroller *c = [storyboard instantiateViewControllerWithIdentifier:@"MyViewcontrollerStoryboardID"]
希望对您有帮助
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.