这是我现在收到的崩溃。有人可以帮我弄清楚如何解决这个问题吗?它发生在这一行UITableViewCell* cell=[_tableView cellForRowAtIndexPath:[_tableView indexPathForRowAtPoint:point]];
我想如果我检查indexPath是否有效它会解决它,但它没有。有什么方法可以阻止这种情况发生?任何提示或建议表示赞赏。我将发布我在下面尝试做的事情。
NSIndexPath *indexPath = [_tableView indexPathForRowAtPoint:point];
if (indexPath) {
UITableViewCell* cell=[_tableView cellForRowAtIndexPath:[_tableView indexPathForRowAtPoint:point]];
.... rest of my code
}
答案 0 :(得分:2)
您可以在初始化数组之前重新加载表视图,或者在使用它时可能是您的数组为空!
就像你使用时一样:
NSString *xyz = [self.your_array objectAtIndex:indexPath.row];
在cellForRowAtIndexPath中,尝试使用不会导致应用崩溃的代码!
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"xyz_cell";
long nodeCount = [self.your_array count];
if (nodeCount == 0 && indexPath.row == 0)
{
Home_CellTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil)
{
cell = [[Home_CellTableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle
reuseIdentifier:CellIdentifier] ;
cell.lbl.textAlignment = NSTextAlignmentCenter;
cell.selectionStyle = UITableViewCellSelectionStyleNone;
}
[cell setSelectionStyle:UITableViewCellSelectionStyleNone];
cell.lbl.text = @"No Posts yet !";
return cell;
}
else{
Home_CellTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
if (cell == nil) {
cell = [[Home_CellTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
} // Your Code Goes HERE .... NSString *xyz = [self.your_array objectAtIndex:indexPath.row]; }
所以,对于空数组,它不会找到键值的值,你的应用程序不会崩溃!
我希望它有所帮助,
答案 1 :(得分:0)
你的tableView没有多个我怀疑的行(或者没有?)。
正如您的错误消息所示,您正在尝试引用索引1处的对象,但该数组的边界为0 .. 0。
如果您在初始化tableView之前执行此操作,则需要更改执行它的位置,或者您忘记实现tableView:numberOfRowsInSection:
委托方法?
答案 2 :(得分:0)
正如你在问题中所说的那样,这一行出现错误,这意味着indexPath持有一些参考尝试更改此行
if (indexPath) {
UITableViewCell* cell=[_tableView cellForRowAtIndexPath:[_tableView indexPathForRowAtPoint:point]];
}
到
if (indexPath) {
UITableViewCell* cell=[_tableView cellForRowAtIndexPath:indexPath];
}
但是,我怀疑你的桌面视图中没有超过1个项目。