1

tableView を使用する単体テストを作成しようとしていますが、セルにアクセスできません。

これは常に nil です:

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

セットアップでデータソースを設定したにもかかわらず

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

何があり得るか

4

3 に答える 3

6

ここに投稿されたように(Swift 3) tableView.cellForRow 関数から直接アクセスするのではなく、cellForRow データソース cellForRowAt 関数を呼び出す必要がありました

//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範囲外にある場合」を返します。したがって、セルが現在テーブルビューに表示されていない場合、このメソッドは を返しnilます。

このメソッドを、tableView:cellForRowAtIndexPath:で実装するメソッドと混同しないでくださいUITableViewDataSource。名前が紛らわしいほど似ています。

于 2013-05-14T14:06:30.220 に答える
-1

実際のインスタンスを作成するUITableViewControllerと、これは正常に機能します。

于 2014-11-28T13:57:06.603 に答える