gpt4 book ai didi

ios - 自定义 TableViewCell 的测试内容

转载 作者:行者123 更新时间:2023-11-28 08:39:39 27 4
gpt4 key购买 nike

我正在使用 Swift 2 构建一个 iOS 应用程序,该应用程序使用自定义表格 View 单元格、附加标签、 ImageView 等(我们将类称为 CustomTableViewCell)。我已经将类 Storyboard连接到每个 subview ,并为单元格分配了一个标识符。我模拟了数据并尝试运行应用程序以检查单元格是否已正确映射,看起来没问题。

问题是我无法将出队单元格视为 CustomTableViewCell 来测试其属性值。当我向下转换从 tableView(tableView, cellForRowAtIndexPath: indexPath) 返回的单元格时,所有自定义属性值都变成了 nil,我的测试失败了。

这是我的代码:

MyViewControllerTests.swift

  func testShouldConfigureTableViewCellToDisplayNotification() {
// Given
sut.tableView = TableViewSpy()

let items = [ <some items to display> ]
sut.displayedItems = items

// When
let indexPath = NSIndexPath(forRow: 0, inSection: 0)
let cell = viewController.tableView(viewController.tableView, cellForRowAtIndexPath: indexPath) as! CustomTableViewCell

// Then
XCTAssertEqual(cell.detailLabel?.text, "foo", "A properly configured table view cell should display the notification detail")
XCTAssertEqual(cell.titleLabel?.text, "Bar", "A properly configured table view cell should display the notification title")
XCTAssertEqual(cell.dateLabel?.text, "15/04/2016", "A properly configured table view cell should display the notification date")
}

MyViewController.swift

  override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cellIdentifier = "CustomTableViewCell"
let displayedItem = displayedItems[indexPath.row]
var cell = tableView.dequeueReusableCellWithIdentifier(cellIdentifier) as? CustomTableViewCell
if cell == nil {
cell = CustomTableViewCell(style: .Value1, reuseIdentifier: cellIdentifier)
}
cell!.dateLabel?.text = displayedItem.date
cell!.detailLabel?.text = displayedItem.detail
cell!.titleLabel?.text = displayedItem.title
return cell!
}

CustomTableViewCell.swift

class CustomTableViewCell: UITableViewCell {
// MARK: Properties
@IBOutlet weak var dateLabel: UILabel!
@IBOutlet weak var detailLabel: UILabel!
@IBOutlet weak var titleLabel: UILabel!

override func awakeFromNib() {
super.awakeFromNib()
// Initialization code
}

override func setSelected(selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)

// Configure the view for the selected state
}

}

最佳答案

尝试替换

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cellIdentifier = "CustomTableViewCell"
let displayedItem = displayedItems[indexPath.row]
var cell = tableView.dequeueReusableCellWithIdentifier(cellIdentifier) as? CustomTableViewCell
if cell == nil {
cell = CustomTableViewCell(style: .Value1, reuseIdentifier: cellIdentifier)
}
cell!.dateLabel?.text = displayedItem.date
cell!.detailLabel?.text = displayedItem.detail
cell!.titleLabel?.text = displayedItem.title
return cell!
}

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cellIdentifier = "CustomTableViewCell"
let displayedItem = displayedItems[indexPath.row]
var cell = tableView.dequeueReusableCellWithIdentifier(cellIdentifier) as! CustomTableViewCell
cell.dateLabel.text = displayedItem.date
cell.detailLabel.text = displayedItem.detail
cell.titleLabel.text = displayedItem.title
return cell
}

如果您已在 Storyboard中正确连接了您的单元格,那么这应该可以工作。否则请检查您是否已为您的单元格正确分配所有 IBOutlets。

如果某些东西不起作用,请检查以下内容:

1) 在 Storyboard中选择您的单元格。

2) 在右栏中打开 Identity Inspector(顶部的第 3 个选项卡)。确保您的单元格的类设置为 CustomTableViewCell

3) 在属性检查器(第 4 个选项卡)中,确保单元格标识符拼写正确。

4) 在连接检查器(最后一个选项卡)中,分配您已定义的单元格的所有 IBOutlets。

关于ios - 自定义 TableViewCell 的测试内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36723142/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com