ios - Xcode,在哪里分配segue标识符

标签 ios swift xcode uistoryboard uistoryboardsegue

请原谅我的初学者问题。 我知道我可以像这样切换到另一个屏幕 (ViewController)

self.performSegueWithIdentifier ("SecondViewController", sender: self)

但我似乎无法找到在哪里为我的第二个屏幕分配 ID,我只是找到 Storyboard ID,是吗?

我已经尝试过了,只收到了一个崩溃并出现以下错误:

Receiver () has no segue with identifier 'SecondViewController'

有什么想法吗?谢谢

最佳答案

Segue Identifierstoryboard ID not 相同,storyboard ID 在您要基于该特定 Storyboard 创建 View Controller 时使用-而且它必须是唯一的,与 segue 标识符不同-。

如果您已经知道如何创建 segue,则可以跳过这部分。

在两个 viewController 之间添加一个 segue:

在 Interface Builder 中,按下 ctrl 并在您要链接的两个 View Controller 之间拖动(确保您是从 View Controller 本身拖动,而不是它的主视图)。你应该看到:

enter image description here

例如,选择“显示”,输出应如下所示:

enter image description here

如上图,红色矩形框内的箭头就是segue。

补充说明:如果您选择了“显示”选项,则必须将您的第一个 View Controller 嵌入到导航 Controller 中(选择您的第一个 View Controller -> 编辑器 -> 嵌入 -> 导航 Controller ),输出应如下所示:

enter image description here

因为“显示”意味着插入导航 Controller 堆栈。

为 segue 分配标识符:

选择 segue,从属性检查器中您会看到“Identifier”文本字段,就是这样!确保插入与 performSegueWithIdentifier 中使用的名称完全相同的名称。

如果您不知道在哪里可以找到属性检查器,它位于右上角,如下所示:

enter image description here


此外:

要从一个 View Controller 添加多个 segues,请遵循相同的过程(ctrl + 从第一个 Controller 拖动到其他 View Controller ),输出应该如下所示:

enter image description here

在这种情况下,您可能会面临如何识别已执行哪个转场的问题,覆盖 prepare(for:sender:)方法是解决方案,您可以根据 segue identifier 属性进行检查:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if (segue.identifier == "firstSegueIdentifier") {
        // ...
    } else if (segue.identifier == "secondSegueIdentifier") {
        //...
    }
}

这将是您添加到 Storyboard 中的 segue 的名称。

关于ios - Xcode,在哪里分配segue标识符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39904328/

相关文章:

ios - 通过自动将方法调用映射到字典中的键来实现 Swift 协议(protocol)

xcode - 正确设置,以便 Xcode 为 iOS 设备生成正确符号化的日志

ios - 收藏 View : UIViewRepresentable + NavigationView

xcode - 在 NSUserDefaults 中存储字典导致 EXC_BAD_ACCESS

ios - Django 推送通知到 IOS

ios - NSUserDefaults 在手机重启但未解锁时丢失其键和值

ios - 由于未捕获的异常 'NSInternalInconsistencyException' 错误而终止应用程序

objective-c - NSTextField 不会设置 StringValue

iOS 10.2 UNUserNotificationCenterDelegate/UNTimeIntervalNotificationTrigger 错误?

ios - UIScrollViewDelegate 函数未调用