我创建了一个自定义的UITableViewCell类,用于绘制我的UITableViewCell。一切都是正确绘制的,但是由于我放入UITableViewCell的元素,我在选择单元格方面遇到了问题。
这是我用来绘制UITableViewCell的方法,这是我的自定义UITableViewCell
- (void)drawCell
{
nameString = [[UILabel alloc] init];
nameString.backgroundColor = [UIColor redColor];
nameString.frame = CGRectMake(15.0, 0.5, 70.0, 40.0);
nameString.text = [itemsDictionary objectForKey:@"Name"];
lastNameString = [[UILabel alloc] init];
lastNameString.backgroundColor = [UIColor clearColor];
lastNameString.frame = CGRectMake(105.0, 0.5, 95.0, 40.0);
lastNameString.text = [itemsDictionary objectForKey:@"LastName"];
addressString = [[UILabel alloc] init];
addressString.backgroundColor = [UIColor clearColor];
addressString.frame = CGRectMake(220.0, 10.5, addressString.frame.size.width, 50.0);
addressString.text = [NSString stringWithFormat:@"ISN %@: %@",[itemsDictionary objectForKey:@"AddNumber"] ,[itemsDictionary objectForKey:@"AddString"]];
[addressString sizeToFit];
// scrollcell has a dynamic scrollwidth depending on the sddressString but has a framesize of a normal UITableViewCell
scrollCell = [[UIScrollView alloc] init];
scrollCell.backgroundColor = [UIColor blueColor];
scrollCell.frame = CGRectMake(0.0, 0.0, ScreenWidth, 45.0);
[scrollCell setContentSize:(CGSizeMake((220.0 + addressString.frame.size.width)+15, 45.0))];
[scrollCell addSubview:nameString];
[scrollCell addSubview:lastNameString];
[scrollCell addSubview:addressString];
[[self contentView] addSubview:scrollCell];
}
正如您所看到的,我正在添加一个覆盖整个单元格的UIScrollView,我认为它阻止了UITableViewCell委托选择方法。
如何让委托方法didSelectRowAtIndexPath起作用?
答案 0 :(得分:1)
您是否添加了以下内容?
@implementation ViewController <UITableViewDelegate, UITableViewDataSource>
并将委托设置为自己?
self.tableview.delegate = self;
答案 1 :(得分:0)
单元格中的UIScrollView总是会成为一个问题,因为它会拦截事件。如果可以,请依赖于表视图滚动并使单元格显示内容所需的大小。
如果你必须有滚动视图,你可能需要在单元格的顶部添加一个视图,添加自己的手势识别器,并选择将哪些事件发送到表格视图以及哪些事件发送到滚动视图。< / p>
还可以查看this answer - 您也可以将touchesBegan / Moved / Ended发送到nextResponder。
答案 2 :(得分:0)
另外两个答案中的一个可能是正确的路径,但是如果您使用的是故事板segue,那么在didSelectRowAtIndexPath之前会有这样的代码,因此您在那里的代码可能会根据segue和发生的情况而无关紧要。