如何检查我们来自哪个视图控制器到另一个视图控制器

时间:2017-07-18 06:22:38

标签: ios swift uinavigationbar

我有一个屏幕,如screen1vcscreen2vc。现在我有一个名为commonvc的视图控制器。

我怀疑是。在screen1vcscreen2vc中,我将允许用户查看commonvc屏幕。但是在viewdidloadviewdidapper中,我需要检查哪个viewcontroller用户即将到来。

喜欢

if (screen1vc) 

{

}   else if (screen2vc){

}

我该怎么办请帮助我。我正在努力推动commonvc

 self.navigationController?.pushViewController(commonvc, animated: true)

由于

5 个答案:

答案 0 :(得分:0)

您可以在公共VC中拥有父控制器属性。将它设置在screen1vc和screen2vc中的prepareFor segue方法中,并使用self。

现在,在commmonVC中,只需检查

if ([parentController iskindOfClass: screen1vc]) 
{

}else if ([parentController iskindOfClass: screen2vc]){

}

这应该有用。

答案 1 :(得分:0)

 NSUInteger numberOfViewControllersOnStack = [self.navigationController.viewControllers count];
 UIViewController *parentViewController = self.navigationController.viewControllers[numberOfViewControllersOnStack - 2];

    if ([parentViewController isKindOfClass: screen1vc]){

    }else if ([parentViewController isKindOfClass: screen2vc]){

    }

答案 2 :(得分:0)

在swift中,如果你在导航控制器堆栈中那么

navigationcontroller.viewControllers[navigationcontroller.viewControllers.count - 2]

将为您提供所需的UIViewController对象。

如果您正在展示视图控制器,那么self.presenting将为您完成工作。

希望这有帮助!

答案 3 :(得分:0)

你可以通过两种方式做到

1.通过如下所示从navigationController viewControllers数组获取前一个。

if let navController = self.navigationController, navController.viewControllers.count >= 2 {
     let viewController = navController.viewControllers[navController.viewControllers.count - 2]
}

2.另一种方法是在commonVC&中创建字符串变量在推送到viewController时填充所需的值。您可以执行类似下面的操作

在commonVC中创建变量

 var isFrom:String = ""

在推送使用commonVc对象之前分配值。

 commonvc.isFrom = "screen1VC"
 self.navigationController?.pushViewController(commonvc, animated: true)

现在处于commonVC

if (self.isFrom == "screen1VC") 

{

}   else if (self.isFrom == "screen2VC"){

}

答案 4 :(得分:0)

您可以创建一个UIView扩展并在整个应用程序中使用它。

extension UIView{
var parentViewController: UIViewController?{
    var parentResponder: UIResponder? = self
    while parentResponder != nil {
        parentResponder = parentResponder!.next
        if parentResponder is UIViewController{
            return parentResponder as! UIViewController!
        }
    }
    return nil                                                      
   }                                                                 
}

并像这样使用

if parentViewController?.isKind(of: screen1vc){

}