我正在使用CustomCells填充UITableView,我正在尝试调用didSelectRowAtIndexPath。这是Custom Cell的标题。
#import <UIKit/UIKit.h>
@interface CustomCell : UITableViewCell {
IBOutlet UILabel *bizNameLabel;
IBOutlet UILabel *addressLabel;
IBOutlet UILabel *mileageLabel;
IBOutlet UIImageView *bizImage;
}
@property (nonatomic, retain) UILabel *bizNameLabel;
@property (nonatomic, retain) UILabel *addressLabel;
@property (nonatomic, retain) UILabel *mileageLabel;
@property (nonatomic, retain) UIImageView *bizImage;
@end
非常简单明了。我有一个detailDisclosureButton我也在单元格中的cellForRowAtIndexPath方法中添加了单元格,并且正在调用方法accessoryButtonTappedForRowWithIndexPath:
,但是didSelectRowAtIndexPath不是。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"CustomCell";
CustomCell *cell = (CustomCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil)
{
NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"CustomCellView"
owner:self options:nil];
#ifdef __IPHONE_2_1
cell = (CustomCell *)[nib objectAtIndex:0];
#else
cell = (CustomCell *)[nib objectAtIndex:1];
#endif
}
// Configure the cell.
NSDictionary *dict = [rows objectAtIndex: indexPath.row];
/*
CODE TO POPULATE INFORMATION IN CUSTOM CELLS HERE
*/
#ifdef __IPHONE_3_0
cell.accessoryType = UITableViewCellAccessoryDetailDisclosureButton;
#endif
return cell;
}
我在所有方法中都放置了一个NSLog以及断点。我试图调用的方法不是,但在我的CustomCell类中,以下方法是。那么在使用CustomCell时有没有办法让didSelectRowAtIndexPath被调用?
- (void)setSelected:(BOOL)selected animated:(BOOL)animated
答案 0 :(得分:1)
自定义单元格与否应该没有任何区别。你在编辑模式吗?如果是,则必须在tableView上设置allowsSelectionDuringEditing = true
。
答案 1 :(得分:0)
如果您在xib中使用Tableview,那么你想在文件所有者中提供tableview的数据源和委托连接。
答案 2 :(得分:0)
由于您说调用tableView:accessoryButtonTappedForRowWithIndexPath:
,我们知道您的tableView的委托属性已正确设置。所以tableView:didSelectRowAtIndexPath:
也应该被调用。如果它没有被调用,我最好的猜测是你在方法签名的某个地方有一个拼写错误。将此方法签名复制并粘贴到您的代码中,以确保您不会意外地省略“tableView:”部分或出现大写错误。
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
编辑:辅助假设:在您定义自定义单元格的.xib中,确保选中“启用用户交互”。
答案 3 :(得分:0)
检查你是否为myTableView的父视图设置了UITapGestureRecognizer ..这可能超过触摸事件并消耗它。