swift - Storyboard / Swift 所有 IBOutlets 和 _view 都是 nil
问题描述
我正在开发一个 Swift 应用程序并遇到了一个疯狂的奇怪问题。我有一个简单的故事板视图控制器设置,它有 3 个UIButtons
aUIImageView
和一个UIView
(作为主视图的子视图)。
我想以编程方式将 a 添加WKWebView
到UIView
.
够容易吧?以上所有内容都在 Storyboard View 中,在自定义UIViewController
类中声明并在 IB 中连接。然而在运行时,一切都是零。这是我的代码片段:
@IBOutlet var button1 : UIButton!;
@IBOutlet var button2 : UIButton!;
@IBOutlet var button3 : UIButton!;
@IBOutlet weak var containerForWebView: UIView!
var webView: WKWebView!
override func loadView()
{
}
override func viewDidLoad()
{
super.viewDidLoad()
displayWebPage()
}
override func viewWillAppear(_ animated: Bool)
{
super.viewWillAppear(animated)
}
override func viewDidLayoutSubviews()
{
super.viewDidLayoutSubviews()
}
private func displayWebPage()
{
webView = WKWebView()
webView.autoresizingMask = [.flexibleWidth, .flexibleHeight]
webView.frame = CGRect(origin: CGPoint.zero, size: containerForWebView.frame.size)
webView.navigationDelegate = self
containerForWebView.addSubview(webView)
let url = URL(string: "https://www.google.com")!
webView.load(URLRequest(url: url))
}
当代码调用displayWebPage()
我在第一行中断的方法时。在调试器中你可以看到所有的UIViewController
属性都是 nil。IBOutlets 为 Nil,其自身的 _view 变量UIViewController
为 nil。
我不明白为什么会这样。一切都非常简单且易于连接。我从未在 Objective-C 中遇到过此类问题。任何建议表示赞赏!
解决方案
删除loadView
实施。不要覆盖该方法,请始终使用viewDidLoad
。
如果您覆盖loadView
,那么您负责创建控制器的视图并将其分配给self.view
.
推荐阅读
- oracle - 在表的列中从 PDT 转换为 GMT 或 PST 转换为基于 GMT 的日期时间
- c# - 如何在列表中切换大小写
在 C# 中 - php - 使用 php 发布 GeoJSON 数据时出现错误请求
- javascript - 为什么我的 JavaScript 会抛出“请求的资源上不存在 'Access-Control-Allow-Origin' 标头”错误,而 Postman 没有?
- typescript - 使用打字稿迭代枚举并分配给枚举
- r - R- merging two data sets within time duration/intervals
- javascript - 使用javascript替换文本中的关键字
- php - 从 SQL for PHP 网页获取列名
- r - 在更大的 data.table 中处理分组的 data.tables
- flutter - 无法从 Cloud Firestore 归档处于初始状态的单个数据