使用nil UIImageView自定义UITableViewCell

时间:2017-02-22 01:10:02

标签: ios swift xcode uitableview

我创建了一个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链接到我的原型单元格。

linked UIImageView

展开的东西是由Xcode创建的,它不应该是nil,因为它实际上是一个单元格UIImageView

1 个答案:

答案 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;
}