将 UIKit 连接到代码

Posted

技术标签:

【中文标题】将 UIKit 连接到代码【英文标题】:Connecting UIKit to Code 【发布时间】:2018-02-07 06:39:44 【问题描述】:

我已尝试按照提到的说明here 将 UI 组件连接到我的视图控制器。虽然,每当我生成这条线

@IBOutlet weak var mt: UITextView!

当我运行我的应用程序时,它会在使用消息启动 segue 后发出 SIGABRTs

Terminating app due to uncaught exception 'NSUnknownKeyException', 
reason: '[<UIViewController 0x10336c400> setValue:forUndefinedKey:]: 
this class is not key value coding-compliant for the key mt.'

我浏览了其他帖子,这不可能是死链接,因为我刚刚创建了它,当我删除引用出口时,应用程序不再崩溃。

有人可以告诉我如何解决这个问题吗?所有相关代码如下。

视图控制器

performSegue(withIdentifier: "mySegueID", sender: nil)
...    

override func prepare(for segue: UIStoryboardSegue, sender: Any?) 
    if (segue.identifier == "mySegueID") 
        if let destinationViewController = segue.destination as? MessageViewController 
            destinationViewController.message = "Hi friend"
        
    

消息视图控制器

import UIKit

class MessageViewController: UIViewController 
    var message:String = "default"

    @IBOutlet weak var mt: UITextView!

    override func viewDidLoad()
        super.viewDidLoad()
        mt.text = message
    

提前谢谢你!

【问题讨论】:

1.转到每个视图控制器的检查器(在故事板/IB 右侧)并检查您是否有任何名为“mt”的引用出口,该出口未连接到该特定视图控制器的任何 iboutlet 您没有在情节提要中为您的视图控制器设置自定义类,因此您得到的是通用的UIViewController,而不是您的MessageViewController - 您可以从异常消息中看到这一点;它引用了UIViewController @Paulw11 这就是它的样子,当你点击灰色箭头时,它会将你带到 MessageViewController.swift imgur.com/a/ETEWl @ibnetariq 这就是我的检查员的样子imgur.com/a/1Kcss 检查情节提要中的每个视图控制器。我的猜测是你试图测试一些东西并在其他一些控制器中留下一个名为“mt”的引用。 imgur.com/a/UjHCu 【参考方案1】:

所以我想通了!导致错误的原因是无法识别自定义类。通过点击“从目标继承模块”,它解决了这个问题。

【讨论】:

以上是关于将 UIKit 连接到代码的主要内容,如果未能解决你的问题,请参考以下文章

将 UIKit 元素添加到情节提要时应用程序崩溃 [重复]

将 UIViewRepresentable 连接到 SwiftUI

有啥方法可以将视图从 swiftUI 更改为 UIKit?

如何将故事板连接到代码

尝试将 UIButton 连接到代码时出现“对象退出”功能

将远程服务器连接到 spyder 以运行 Python 代码