在单元测试期间,cellForRowAtIndexPath为nil

Ste*_*all 1 iphone objective-c uitableview ios

我正在尝试编写一个使用tableView的单元测试,但是在访问单元格时遇到了麻烦。

这始终为零:

- (void)testDidEndEditingUpdatesLiftRecords {
    TextViewCell *cell = (TextViewCell *) [tableView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0]];
Run Code Online (Sandbox Code Playgroud)

尽管我在设置中设置了数据源

- (void)setUp {
    [super setUp];
    source = [[MyDataSource alloc] init];
    tableView = [[UITableView alloc] init];
    [tableView setDataSource:source];
Run Code Online (Sandbox Code Playgroud)

可能是什么

Rob*_*Rob 5

正如文档所说,该UITableView方法cellForRowAtIndexPath:返回“代表表格单元格的对象,或者nil单元格不可见或indexPath超出范围”。因此,如果单元格当前在表格视图上不可见,则此方法将返回nil

请注意,此方法不应与tableView:cellForRowAtIndexPath:我们在UITableViewDataSource. 这些名字非常相似,令人困惑。


Mar*_*ria 5

张贴在这里(SWIFT 3)我只好打电话给cellForRow数据源cellForRowAt函数,而不是从tableView.cellForRow功能直的访问

//this 
let cell = controller.tableView(controller.tableView, cellForRowAt: IndexPath(row: 0, section: 0))

//instead of this
let cell = controller.tableView.cellForRow(at: IndexPath(row: 0, section: 0))
Run Code Online (Sandbox Code Playgroud)