我有信息框对象 - "信息视图"。我想将此视图附加到当前的VC视图,有时直接在VC类中有时在VC类之外,ex。在我的框架中。
我不想总是在方法参数中传递当前的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)
}
}
rootViewController
中的 UIApplication.sharedApplication()
属性返回当前VC,但转换后此VC未更改。
我如何才能获得当前的VC?
答案 0 :(得分:-1)
rootViewController
是一个很好的方式。您的根VC可能是导航控制器,因此您可以使用以下内容:
func currentVC() -> UIViewController? {
guard let navigationController = UIApplication.sharedApplication().keyWindow?.rootViewController as? UINavigationController else { return nil }
return navigationController.viewControllers.last
}
答案 1 :(得分:-1)
嗨Artem和DeyaEldeen, 如果我没有错,你想在故事板上访问视图控制器。
您可以获取任何视图控制器的实例
步骤
1在自定义类属性中设置视图控制器的故事板ID
2在您的信息视图类中
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
MyViewcontroller *c = [storyboard instantiateViewControllerWithIdentifier:@"MyViewcontrollerStoryboardID"]
我希望它可以帮到你