如何在非视图控制器类中获取可见/当前视图控制器?迅速
Posted
技术标签:
【中文标题】如何在非视图控制器类中获取可见/当前视图控制器?迅速【英文标题】:How get visible / current viewcontroller in non-viewcontroller class? Swift 【发布时间】:2016-02-25 08:29:43 【问题描述】:我有信息框对象 - “信息视图”。我想将此视图附加到当前的 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?
【问题讨论】:
【参考方案1】:rootViewController
是一个不错的选择。你的根 VC 可能是一个导航控制器,所以你可以使用这样的东西:
func currentVC() -> UIViewController?
guard let navigationController = UIApplication.sharedApplication().keyWindow?.rootViewController as? UINavigationController else return nil
return navigationController.viewControllers.last
【讨论】:
【参考方案2】:嗨,Artem 和 DeyaEldeen, 如果我没记错的话,你想访问情节提要上的视图控制器。
您可以获取任何视图控制器的实例 步骤 1 在其自定义类属性中为视图控制器设置故事板 ID。 2 在您的信息视图类中
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
MyViewcontroller *c = [storyboard instantiateViewControllerWithIdentifier:@"MyViewcontrollerStoryboardID"]
希望对你有帮助
【讨论】:
以上是关于如何在非视图控制器类中获取可见/当前视图控制器?迅速的主要内容,如果未能解决你的问题,请参考以下文章
如何在非控制器类中从 Microsoft.AspNetCore.Identity 获取 UserID