代码之家  ›  专栏  ›  技术社区  ›  Brian Teeter

故事板/swift所有iboutlets和视图均为零

  •  2
  • Brian Teeter  · 技术社区  · 7 年前

    我正在开发一个快速应用程序,遇到了一个奇怪的问题。我有一个简单的故事板视图控制器设置,它有3个 UIButtons UIImageView 和A UIView (作为主视图的子视图)。

    我要以编程方式添加 WKWebView UIVIEW .

    很简单,对吧?以上所有内容都在故事板视图中,在自定义中声明 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() 方法我在第一行中断。在调试器中,您可以看到 ui视图控制器 属性为零。iboutlets为零,并且 ui视图控制器 本身就是零。

    我不明白为什么会这样。一切都很简单,而且很容易连接。我从来没有在Objective-C中遇到过这样的问题。任何建议都会受到赞赏!

    enter image description here

    enter image description here

    1 回复  |  直到 7 年前
        1
  •  4
  •   Sulthan    7 年前

    去除 loadView 实施。不要重写该方法,始终使用 viewDidLoad 相反。

    如果您覆盖 加载视图 然后负责创建控制器视图并将其分配给 self.view .