1

I'm trying to write a unit test that uses a tableView, and I'm having trouble accessing the cells.

This is always nil:

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

Despite the fact that I set the data source in the setup

- (void)setUp {
    [super setUp];
    source = [[MyDataSource alloc] init];
    tableView = [[UITableView alloc] init];
    [tableView setDataSource:source];

What could be

4

3 回答 3

6

正如此处发布的(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))
于 2017-01-09T18:56:21.283 回答
5

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

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

于 2013-05-14T14:06:30.220 回答
-1

实例化一个实际的UITableViewController,这工作正常。

于 2014-11-28T13:57:06.603 回答