我在Storyboard中创建了一个自定义的UITableView单元格,如下所示:
我将它连接到我的UITableViewCell类,如下所示:
导入UIKit
class StatusCell: UITableViewCell {
@IBOutlet weak var InstrumentImage: UIImageView!
@IBOutlet weak var InstrumentType: UILabel!
@IBOutlet weak var InstrumentValue: UILabel!
override func awakeFromNib() {
super.awakeFromNib()
}
override func setSelected(selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
}
}
最后我试图从我的UIViewController初始化UITableView:
import UIKit
class SecondViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {
@IBOutlet weak var TableView: UITableView!
let Items = ["Altitude","Distance","Groundspeed"]
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return self.Items.count
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
var cell: StatusCell! = tableView.dequeueReusableCellWithIdentifier("Cell") as StatusCell!
cell.InstrumentType?.text = Items[indexPath.row]
cell.InstrumentValue?.text = "150 Km"
cell.InstrumentImage?.image = UIImage(named: Items[indexPath.row])
return cell
}
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
但是,当我尝试运行该程序时,出现EXC_BAD_INSTRUCTION错误:
我做错了什么?任何帮助将不胜感激!
答案 0 :(得分:0)
调试器输出显示cell
为nil
,表示无法实例化。此外,您正在强制展开可选项(使用!
),这会导致应用程序在nil
值上崩溃。
尝试更改cellForRowAtIndexPath
方法(请注意dequeueReusableCellWithIdentifier
方法):
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as StatusCell
cell.InstrumentType.text = Items[indexPath.row]
cell.InstrumentValue.text = "150 Km"
cell.InstrumentImage.image = UIImage(named: Items[indexPath.row])
return cell
}
假设您的自定义tableViewCell类已正确设置且出口已绑定,则无需检查选项。
在let cell = ...
行放置断点并逐步执行代码。检查cell
是否已初始化且不是nil
。
并且请: 不要对属性和变量(您的出口,Items
数组...)使用大写名称,因为大写名称是班级,结构,......