gpt4 book ai didi

ios - 为什么我必须调用 viewWillAppear 来获取 cellForRowAtIndexPath?

转载 作者:行者123 更新时间:2023-11-29 03:27:41 24 4
gpt4 key购买 nike

测试从 Storyboard加载的 UITableViewController 子类时,cellForRowAtIndexPath 将返回 nil,除非我:A) 发送 viewWillAppear:YES 或 B) 获取 tableView.numberOfSections。

这是为什么呢?为什么在主线程上访问 View 或发送 loadView 选择器不能完成这项工作?

SpecBegin(CustomerViewController)
describe(@"CustomerViewController", ^{

__block CustomerViewController *_vc;

beforeEach(^{
NSLog(@"Before Each");
UIStoryboard *mainstoryboard = [UIStoryboard storyboardWithName:@"Storyboard_Pad" bundle:nil];
_vc = (CustomerViewController *)[mainstoryboard instantiateViewControllerWithIdentifier:@"customer"];
});

it(@"the first cell should be the fullName cell", ^{
// Following line is needed to make the following tests pass.
[_vc viewWillAppear:YES];
UITableViewCell *cell = [_vc.tableView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0]];
expect(cell.reuseIdentifier).to.equal(@"fullName");
});

});

SpecEnd

最佳答案

看起来您正在对 UI 代码进行单元测试。我通常建议不要这样做,因为您将手动尝试模拟 ViewController 生命周期方法,以便接近重现 UI 在正在运行的应用程序中的行为方式。

我建议尝试两件事:

  1. 对您的模型/逻辑进行单元测试(例如,您的表格 View 正在使用的数据)。
  2. 如果您必须测试您的 UI,我建议您查看 Automated Testing使用 Xcode。

关于ios - 为什么我必须调用 viewWillAppear 来获取 cellForRowAtIndexPath?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20251606/

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