【问题标题】:How to detect which segue identifier activated current view controller如何检测哪个 segue 标识符激活了当前视图控制器
【发布时间】:2017-07-21 00:11:17
【问题描述】:

我只是在寻找一种方法来检测哪个 Segue Identifier 激活了当前的 viewController。我需要这样做,因为我有可能无法满足的条件,但可以从另一个 viewController 引用,然后我想使用该特定的 segue ID 突出显示一些标签。以前有人需要这样做吗?你是如何处理这个问题的?

【问题讨论】:

  • 感谢您尝试减轻 SO @DávidPásztor 上所需的问题,但是您链接的提到的问题不适用于我的场景。我也认为没有必要投反对票。对于在需要我提问的所有情况下都有足够差异的问题的最佳解决方法,我提出了一个完全合理的问题。
  • 您刚刚接受的答案与我链接的问题中的答案几乎相同,所以您刚刚证明了我的观点。

标签: ios objective-c segue


【解决方案1】:

可能您应该在“当前视图控制器”上创建一个属性来存储转场的名称,然后在使用转场实例化您的“当前视图控制器”的控制器上创建您在触发转场执行之前分配它:

目标 C:

- (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
        }
    }
}

这是你需要的吗?让我知道。 反正我还是不知道你为什么要那样做。

【讨论】:

  • 你实际上明白了我想要传达的概念。我想我的目标有点混乱。本质上,当控制器验证网络时,我有一个需要在特定网络上的应用程序;如果验证失败,我会执行 segue 以显示用户网络详细信息。现在我想突出显示 VC 中显示不正确的网络详细信息的特定标签。因此,网络详细信息 VC 需要了解验证失败的原因,以便我可以呈现相关的 UI 更改以告知用户验证失败的原因。但你的概念回答了我的问题。谢谢!
  • 这个问题被标记为 Objective-C,而不是 Swift。请以适当的语言发布答案。
  • 刚刚意识到@rmaddy。谢谢。
  • @NathanDenlinger 我现在还没有 iOS 调试器,但我想我也添加了一个有效的 ObjectiveC 代码。
  • 别担心!我都精通,我的代码工作正常。
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-01-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-11
    • 1970-01-01
    • 2019-07-03
    相关资源
    最近更新 更多