我调用了以下选择器:
- (void)loadItemView:(LoLoanedItemDoc *)itemDoc
{
NSIndexPath *indexPath = [NSIndexPath indexPathForRow:0 inSection:0];
UITableViewCell *imageViewCell = [self.tableView cellForRowAtIndexPath:indexPath];
((UIImageView *)[imageViewCell viewWithTag:111]).image = [self.itemDoc fullImage];
// rest of code
最初,我注意到imageViewCell
没有正确设置图像。然后我注意到imageViewCell收到了一个零值。然后我发现indexPath没有被正确初始化,那就是我现在的位置。当我在这一行设置断点时:
NSIndexPath *indexPath = [NSIndexPath indexPathForRow:0 inSection:0];
并检查该值,它显示NULL
的长度为0.对于所有帐户,我正在正确初始化此值,那么我缺少什么?
答案 0 :(得分:0)
第一行(NSIndexPath *indexPath = ...
)不是问题。它将始终返回有效的indexPath。如果您正如您所描述的那样进行检查,则应首先“跳过”一次,然后检查indexPath
的值。
如果尚未加载您的tableview,则第二行将返回nil
。 (何时/何时设置数据源?)
另一件事是:您的方法目前没有使用它的参数itemDoc
,而是使用类属性self.itemDoc
。
在cellForRowAtIndexPath:
(而不是viewDidLoad
)中执行此操作也可能更好,因此您不必创建indexPath并检索单元格,只需检查indexPath。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
// Your current code
if (indexPath.section == 0 && indexPath.row == 0) {
((UIImageView *)[imageViewCell viewWithTag:111]).image = [self.itemDoc fullImage];
}
return imageViewCell;
}
如果您愿意,可以将其放入您从tableView:cellForRowAtIndexPath:
答案 1 :(得分:0)
当我将项目构建为发布时,这发生在我身上。检查是否在方案中为构建配置选择了调试。