【问题标题】:IOS Swift - modal view errorIOS Swift - 模态视图错误
【发布时间】:2015-04-23 19:11:06
【问题描述】:

我在 Swift 中遇到了一个非常奇怪的错误。

我创建了一个嵌入在 NavigationController 中的 ViewController (A)。 在右上角,我有 BarButtonItem,它在 Storyboard 中以模态方式设置了一个 segue 到另一个 Viewcontroller(B)。

在主 VC (A) 中,我有多个 TextField,其委托是主 VC。

override func viewDidLoad() {
    super.viewDidLoad()

    intervalTextField.delegate = self
    endTimeTextField.delegate = self
    ... 
}

当我运行我的应用程序时,新的 ViewController (B)(在故事板中)没有与 ViewController.swift (B) 绑定。当我单击 de bar 按钮(来自 A)时。它显示模态(B)没有问题。当我在 de StoryBoard 中将 (B) 与模态视图控制器 (B) 的 swift 文件绑定时。比姆...

我收到了这个错误:

致命错误:在展开可选值时意外发现 nil

调试器使用 EXC_BAD_INSTRUCTION 指向主 ViewController (A) 中第一个 TextField 委托的定义。

我删除了 (B) 并创建了另一个 ViewController (C)(Storyboard first),没有与代码绑定。有用。我创建另一个 ViewController.swift (C),绑定它们。当我在 (A) 和 (C) 之间放置模态序列时,也会发生同样的错误

可能是什么问题以及为什么会出现此错误? oO

提前致谢

编辑:我添加了 A、B、C 以获得更多理解。而且 (A) 控制器工作得很好,我的 textFields 工作正常,被声明等等。

【问题讨论】:

    标签: ios swift modal-dialog


    【解决方案1】:

    您可能希望明确更新您的问题,说明哪个视图控制器是哪个。我对你到底在哪里遇到错误有点困惑,但基本上这个异常被抛出,因为你的UITextFieldnil。确保您已将任何 IBOutlet 正确连接到您的视图控制器。右键单击 UITextField 以查看它是否具有正确的连接。如果连接正确,您会在IBOutlet 中看到一个小黑点,如下所示:

    ^

    将鼠标悬停在该点上并单击该点应该会将您带到代码中正确的UITextField

    【讨论】:

    • 感谢您的回答,为了更清晰,我更新了我的帖子。并且问题不应该存在,因为所有(A)控制器都可以正常工作。
    • 在您的问题中,您写了“调试器指向主 ViewController 中第一个 TextField 委托的定义”。这是否意味着您的主视图控制器 (A) 不能正常工作?在IB中,如果你右击intervalTextField,它会显示一个引用出口吗?
    • 这就是谜团...... (A) 上一切正常,我单击 BarButton 加载 (B)。我们可以在堆栈跟踪中看到,在指向 TextField 的委托声明之前,我们处于 (B) 的 viewDidLoad 中。这就是为什么我不明白为什么调试器指向 (A)。
    • 我重新创建了您的错误,但根据您提供的信息,我唯一可以推断的是,导致错误的任何文本字段都没有从 Interface Builder 正确连接到您的正确 IBOutlet代码。同样,当您在 Interface Builder 中右键单击文本字段时,引用插座的名称是否与其关联的视图控制器中的名称匹配并已连接(由小灰点显示)?
    猜你喜欢
    • 2014-10-24
    • 1970-01-01
    • 1970-01-01
    • 2015-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-23
    • 1970-01-01
    相关资源
    最近更新 更多