Nib IBOutlet导致应用程序崩溃

时间:2017-05-06 02:58:33

标签: ios swift swift3 nib iboutlet

真的需要你的帮助!我已经完成了解决这个问题的所有可能的帖子,但似乎没有任何效果。

所以我使用.xib文件在ProfileFoldingCellView.swift中创建一个子视图,它完全有效,直到我尝试在同一个类中添加一个IBOutlet。这是代码:

import Foundation
import UIKit

class ProfileFoldingCellView: UIView {

    @IBOutlet var mainLabel: UILabel!
    public var cellIndex: Int = 0

    init(index: Int) {
        super.init(frame: CGRect(x: 0, y: 0, width: 0, height: 0))

        cellIndex = index
        print("Index: \(cellIndex)")

        setupContentView()
    }

    func setupContentView() {
        let contentView = UINib(nibName: "ProfileFoldingCellView", bundle: nil).instantiate(withOwner: nil, options: nil)[0] as! UIView
        contentView.autoresizingMask = [.flexibleWidth, .flexibleHeight]

        addSubview(contentView)
    }

    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
        setupContentView()
    }

}

正如您所看到的,标签IBOutlet的创建没有任何问题,并且没有其他过时或未使用的插座漫游。

Label Outlet http://imgur.com/a/jb9CA

我还确保将ProfileFoldingCellView.swift设置为文件所有者的类。

一切都运行良好,直到我连接插座!然后我收到了这个错误:

Error http://imgur.com/a/6hHPG

相信我,我已经尝试了一切。我可能已经重新创建了一百万次,没有任何工作。任何帮助将不胜感激!

4 个答案:

答案 0 :(得分:5)

将您的文件所有者保留为NSObject,并将您的视图类设置为ProfileFoldingCellView,您的mainLabel应该连接到UIView对象,而不是{{} 1}} {{3}}

答案 1 :(得分:1)

根据您发布的图片,您的// read the data $mydata = $_POST['data']; // perform actions // return if needed header('Content-Type: application/json'); echo json_encode(array('returnData' => 'myOtherData')); 插座没有连接到标签......它已连接到mainLabel对象,这可能是您的单元格视图,而不是files owner

答案 2 :(得分:1)

我修好了!

我只是换了一行

let contentView = UINib(nibName: "ProfileFoldingCellView", bundle: nil).instantiate(withOwner: nil, options: nil)[0] as! UIView

以下内容:

let contentView = Bundle.main.loadNibNamed("ProfileFoldingCellView", owner: self, options: nil)?[0] as! UIView

我将文件所有者的类保留为ProfileFoldingCellView

答案 3 :(得分:0)

答案已在上部提到。我只想用图像来说明它,以便使其更易于理解。

步骤1:不要将类分配给文件所有者,而将其保留为NSObject enter image description here

第2步:选择主视图,然后将类分配给该视图enter image description here

Step3:现在连接您的插座enter image description here

现在,它不会引起与IBOutlet相关的任何错误:)