import UIKit
class ToDoViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
@IBOutlet weak var DateLabel: UILabel!
@IBOutlet weak var MonthLabel: UILabel!
@IBOutlet weak var DayLabel: UILabel!
@IBOutlet weak var tableView: UITableView!
@IBOutlet weak var newButton: UIImageView!
static var ToDoEvents:[event] = []
override func viewDidLoad() {
super.viewDidLoad()
ToDoViewController.readFromFile()
let nib = UINib(nibName: "CustomCell", bundle: nil)
tableView.register(nib, forCellReuseIdentifier: "customCell")
}
public static func readFromFile(){
ToDoViewController.ToDoEvents.append(event(eventName: "Spanish Workbook", eventLength: 3601, complete: false))
ToDoViewController.ToDoEvents.append(event(eventName: "History Test", eventLength: 37, complete: false))
ToDoViewController.ToDoEvents.append(event(eventName: "Lit Essay", eventLength: 40, complete: false))
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return ToDoViewController.ToDoEvents.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "customCell") as! CustomCell
let currentEvent = ToDoViewController.ToDoEvents[indexPath.row]
let eventName = currentEvent.name!
let eventLength = currentEvent.time!
let completion = currentEvent.isComplete!
print(eventName)
print(eventLength)
print(completion)
cell.customInit(name: "\(eventName)", time: "\(eventLength)", completed: completion)
return cell
}
}
当前,我正在尝试创建带有待办事项列表的应用。我正在使用UITableView显示信息,并且有一个名为“ CustomCell”的自定义UITableViewCell,用于在表视图中显示信息。但是,当我运行此代码时,屏幕上没有任何显示。我还在CellForRowAtIndexPath方法中添加了一些打印语句,这些打印语句没有得到执行。然后我尝试添加
self.tableView.delegate = self
self.tableView.dataSource = self
但是,当我尝试使用此附加代码运行该应用程序时,该应用程序崩溃并给出以下错误:
Terminating app due to uncaught exception
'NSInternalInconsistencyException', reason:
'Could not load NIB in
bundle: 'NSBundle
</Users/sid/Library/Developer/CoreSimulator
/Devices/812843C0-ABBA-43E9-A391-
0BED3CBB5030/data/Containers/Bundle
/Application/F8DABFF7-80ED-49E1-8760-315C3C99AFB1/TimeIt.app>
(loaded)' with name 'CustomCell''
我还看了多篇教程,概述了如何向代码中添加自定义单元,而这些教程均未使用tableView.delegate = self或tableView.dataSource = self代码。
我不确定自己在做什么错。感谢所有帮助
先谢谢您!
答案 0 :(得分:0)
我按照以下步骤操作,并修复了错误:
保存xib并重新运行
答案 1 :(得分:0)
添加这两行是正确的方法:
self.tableView.delegate = self
self.tableView.dataSource = self
您的崩溃日志为您指明了正确的方向。 您没有名为“ CustomCell”的xib文件。
如果没有为UITableViewCell使用单独的xib文件,则需要在情节提要中为您的单元格设置适当的类和标识符。如果您在情节提要中进行设置,则无需为表格视图注册xib。
仅当您为表视图单元格使用单独的文件时,才注册nib。
答案 2 :(得分:0)
似乎像register方法一样找不到正确的Nib。名称或标识符可能不正确。您可以使用类似的内容:
func registerCell(){
tableView.register(UINib(nibName: String(describing: CustomCell.self), bundle: nil), forCellReuseIdentifier: "customCell")
}