如何检测哪个segue标识符激活当前视图控制器

问题描述:

我只是想找一种方法来检测哪个Segue标识符激活了当前viewController。我需要这样做,因为我有可能无法满足的条件,但可以从另一个viewController引用,然后我想使用该特定的segue ID突出显示几个标签。有没有人需要这样做?你是如何看待这个的?如何检测哪个segue标识符激活当前视图控制器

+0

可能重复[如何检查使用哪个segue](https://*.com/questions/16167425/how-to-check-which-segue-was-used) –

+0

我很感谢你试图缓解在SO @DávidPásztor上需要提问,但是您提到的问题与您的问题不适用。我也没有看到你的投票需要。对于在所有需要我的问题的情况下都有足够差异的问题,我有一个完美合理的问题。 –

+0

你刚刚接受了一个与我链接的问题几乎相同的答案,所以你刚刚证明了我的观点。 –

也许你应该创建你的“当前视图控制器”上的属性来存储SEGUE的名称,然后它使用SEGUE来实例“当前视图控制器”的控制器上,你为它分配火灾前SEGUE执行:

的ObjectiveC:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{ 
if ([[segue identifier] isEqualToString:@"YourSegueName"]) { 

    // Get destination view 
    CurrentVC *vc = [segue destinationViewController]; 

    // Get button tag number (or do whatever you need to do here, based on your object 
    vc.segueName = @"YourSegueNam"; 
}} 

斯威夫特3:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
    if segue.identifier == "YourSegueName" 
    { 
     if let destinationVC = segue.destination { 
      destinationVC.segueName = segue.identifier 
     } 
    } 
} 

这就是你需要的吗?让我知道。 无论如何,我仍然不知道你为什么想这样做。

+0

你确实得到了我想传达的概念。我想我的目标有点混乱。 本质上,我有一个应用程序需要在特定的网络上,当验证网络的控制器;如果验证失败,我执行一个segue来显示用户网络的详细信息。现在我想突出显示VC中的特定标签,显示不正确的网络细节。因此,网络细节VC需要理解验证失败的原因,以便我可以展示相关的UI更改,以通知用户验证失败的原因。 但你的概念回答了我的问题。谢谢! –

+0

这个问题被标记为Objective-C,而不是Swift。请用适当的语言发布答案。 – rmaddy

+0

刚刚意识到@rmaddy。谢谢。 – matiasdim

这是不可能的。你不能简单地在应用程序的任何位置获取“当前Segue”。由于Segues仅存在于您的应用生命周期中的特定时间点。当你的应用程序准备从一个视图控制器转换到另一个视图控制器时,以及在实际的视觉转换期间。 欲了解更多信息请按照https://developer.apple.com/documentation/uikit/uistoryboardsegue