如何在非viewcontroller类中获取可见/当前viewcontroller?迅速

时间:2016-02-25 08:29:44

标签: ios swift class viewcontroller

我有信息框对象 - "信息视图"。我想将此视图附加到当前的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?

2 个答案:

答案 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"]



我希望它可以帮到你