我创建了一个自定义单元格并在其上放置按钮 和按钮事件是这样的
[cell.BtnRequest addTarget:self action:@selector(didTapButton:) forControlEvents:UIControlEventTouchUpInside];
和didtapbutton代码就是这个
- (void)didTapButton:(id)sender {
WorkerDetailsVC *wvc=[self.storyboard instantiateViewControllerWithIdentifier:@"workerdetailsvc"];
NSIndexPath *indepath = [self.tblorderdata indexPathForCell:sender];
wvc.arrworkarrequest=[arrData objectAtIndex:indepath.row];
NSLog(@" arr send :%@", wvc.arrworkarrequest);
wvc.struserid = struserid;
[self.navigationController pushViewController:wvc animated:YES];
}
在下一页我得到了数组arrworkarrequest,并且在加载所有下一页之后它将显示如下错误
2014-10-01 15:08:42.607 demo[2151:60b] -[__NSCFNumber length]: unrecognized selector sent to instance 0x911a860
2014-10-01 15:08:42.613 dmeo[2151:60b] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFNumber length]: unrecognized selector sent to instance 0x911a860'
答案 0 :(得分:3)
您的问题是,sender
的类型为UIButton
而不是UITableViewCell
,因此它会卡在[self.tblorderdata indexPathForCell:sender]
中,因为该方法调用需要UITableViewCell
类型{1}}。
您需要找到按钮所在的单元格。您可以使用while循环执行此操作(虽然它有点可怕)。类似的东西:
id obj = sender;
while (![obj isKindOfClass:[UITableViewCell class]]) {
obj = [sender superview];
}
[self.tblorderdata indexPathForCell:obj];
这感觉就像滥用视图层次结构一样。
答案 1 :(得分:-2)
如果直接比较字符串的长度,就会发生这种情况
例如
NSString * myString = @“2”;
使用此语句将生成错误
如果(myString.length == 2)