【发布时间】:2019-06-09 04:00:03
【问题描述】:
尝试创建 tableView 单元格 xib,但遇到错误“已加载 nib 但未设置视图出口”
我读过很多帖子,大多数人说将“视图”从文件所有者拖到 IB 视图。
但是,如果您从图像中注意到,我没有“视图”作为选项。我重新创建了一个具有相同结果的 xib。也许是 Swift 4.2 中的新功能。
任何帮助都会很大。
class VersionTVCell: UITableViewCell {
@IBOutlet weak var versionNumber: UILabel!
@IBOutlet weak var versionDetail: UILabel!
@IBOutlet weak var versionDate: UILabel!
}
class VersionTVC: UITableViewController {
fileprivate var versions: Array<VersionModel> = [VersionModel]()
override func viewDidLoad() {
super.viewDidLoad()
self.versions = AppDelegate.getRLDatabase().getVersion()
tableView.register(UINib(nibName: "VersionTVCell", bundle: nil), forCellReuseIdentifier: "VersionCell")
tableView.rowHeight = UITableView.automaticDimension
tableView.estimatedRowHeight = 70
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
{
let cell = tableView.dequeueReusableCell(withIdentifier: "VersionCell", for: indexPath) as! VersionTVCell
cell.versionNumber.text = self.versions[(indexPath as NSIndexPath).row].versionNumber
cell.versionDetail.text = self.versions[(indexPath as NSIndexPath).row].versionDetail
cell.versionDate.text = self.versions[(indexPath as NSIndexPath).row].versionDate
return cell
}
override func numberOfSections(in tableView: UITableView) -> Int {
return 1
}
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return self.versions.count
}
}
以下是两个屏幕截图,第一个来自单元格,第二个来自文件所有者。
我也尝试过从文件所有者链接到标签。没有帮助。
编辑: 添加我的 addSubView 函数:
@objc func loadVersions() {
let newSubView = AddSubView.toVersions.getView()
let blackBackground = UIView(frame: CGRect(x: 0, y: 65, width: self.view.frame.width, height: self.view.frame.height))
blackBackground.backgroundColor = UIColor.black.withAlphaComponent( 0.7)
UIView.transition(with: self.view, duration: 0.3, options: UIView.AnimationOptions.transitionCrossDissolve,
animations: {self.view.addSubview(self.backgroundView)}, completion: nil)
newSubView.frame = CGRect(x: 0, y: (self.view.frame.height) * 0.1, width: (self.view.frame.width) * 0.9, height: (self.view.frame.height) * 0.8)
newSubView.layer.borderWidth = 1
newSubView.layer.borderColor = UIColor.defaultDialogBorderColor().cgColor
newSubView.layer.cornerRadius = 8.0
newSubView.clipsToBounds = true
self.view.addSubview(newSubView)
}
【问题讨论】:
-
应用在哪一行崩溃了?
-
从 xib 加载的 VersionTVC 或者您使用的是故事板?
-
@Vishal16,我正在通过 subView 加载。我在下面的示例中跟随您并消除了视图加载错误。它现在加载,但没有任何数据。我在我的 VerisonTVC 上设置了一个断点,但现在看到它没有被调用。
-
你在使用 Storyboard 吗?
-
@Vishal16,我也尝试将文件的所有者设置为 VersionTVC,但这没有帮助。
标签: swift uitableview xib