我创建了一个UITableView
,这是我的代码:
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell{
// let cell = UITableViewCell(style: UITableViewCellStyle.default, reuseIdentifier: "SubjectCell")
let cell = SubjectCell(style: UITableViewCellStyle.default, reuseIdentifier: "SubjectCell")
cell.cellUIImage.image = UIImage(named: "menu.png")
// cell.cellUIImage = UIImageView(UIImage(named: "menu-32.png"))
if indexPath.row % 2 == 0{
cell.backgroundColor = UIColor.cyan
}
return cell
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 5
}
我的SubjectCell
课程如下:
import Foundation
import UIKit
class SubjectCell : UITableViewCell{
@IBOutlet var cellUIImage: UIImageView!
}
但是,当我运行此代码时,它会崩溃。调试时,我注意到cellUIImage是nil,因此当它解包时会崩溃。 IBOulet
链接到我的原型单元格。
展开的东西是由Xcode创建的,它不应该是nil,因为它实际上是一个单元格UIImageView
。
答案 0 :(得分:-2)
自iOS故事板设计发布以来,您不再需要子类UITableViewCell
来创建自定义单元格。
在故事板中,选择Prototype Cell,在Attributes Inspector选项卡中,为自定义单元格指定identifier
(例如:“YourCellIdentifier”)。
接下来,(仍在故事板中)选择您添加到自定义单元格的UIImageView,为其指定标签编号(例如:1000)
现在将此代码添加到cellForRowAt
方法:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *cellIdentifier = @"YourCellIdentifier";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];
// Here is your desired image view.
UIImageView *yourImageView = [cell viewWithTag:1000];
return cell;
}