试图创建一个tableView单元格xib,但由于“加载笔尖但未设置视图出口”的错误而卡住了
我已经阅读了许多帖子,并且大多数人说将“视图”从“文件的所有者”拖动到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)
}
答案 0 :(得分:3)
我已经尝试过您的代码,并且一切正常。
确保没有将VersionTVCell
类的UITableViewCell
分配给文件所有者,并且没有将@IBOutlet
连接到xib
文件所有者连接检查器应与下图相似
另外,尝试删除并重新连接@IBOutlet
经过测试的示例
答案 1 :(得分:1)
据我了解,所有代码均正确无误,因此请执行一些步骤。
1)确保为单元格的类名分配正确的名称。
2)使用此命令 Shift + 选项 + 命令 + k 清除代码。
3)如果上述步骤没有成功。从tableView UI中删除委托和数据源插座,并在此行之后手动编写。
tableView.register(UINib(nibName: "VersionTVCell", bundle: nil), forCellReuseIdentifier: "VersionCell")
tableView.delegate = self
tableView.dataSource = self
tableView.reloadData()