好的,首先我知道这个问题已被多次询问,但这些问题都没有给我正确答案。
我有一个TableView,当我选择一行时,除非在20到50次之间挖掘了行,否则不会调用didSelectRowAtIndexPath。这很奇怪,在调用方法之前,我必须疯狂地敲击表格大约50次。我无法解决可能导致这种奇怪行为的原因。
让我建立一些事情:
这是我的tableView方法:
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
if (hasFinishedQuery == NO) {
return 0;
}
else{
return 3;
}
}
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
if (section == 2) {
return quickLinksArray.count;
}
else {
return 1;
}
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
if (indexPath.section == 2) {
NSDictionary *dic = [quickLinksArray objectAtIndex:indexPath.row];
NSString *cellidentifier = [dic objectForKey:@"title"];
UITableViewCell *cell = (UITableViewCell *)[tableView dequeueReusableCellWithIdentifier:cellidentifier];
if (!cell)
{
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellidentifier];
}
NSNumber *countNumber = [dic valueForKey:@"count"];
UILabel *label = (UILabel *)[cell viewWithTag:3];
[label setText:[NSString stringWithFormat:@"%@", countNumber]];
label.layer.cornerRadius = 18;
label.layer.masksToBounds = YES;
return cell;
}
else{
static NSString *cellidentifier = @"cellidentifier";
TableViewCell *cell = (TableViewCell *)[tableView dequeueReusableCellWithIdentifier:cellidentifier];
if (!cell)
{
cell = [[TableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellidentifier];
}
return cell;
}
}
- (void)tableView:(UITableView *)tableView willDisplayCell:(TableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
{
if (indexPath.section != 2) {
[self insertDatasourceAndDelegateForCell:cell forRowAtIndexPath:indexPath andCellType:NO];
}
}
- (void) insertDatasourceAndDelegateForCell:(TableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath andCellType:(BOOL)cellType
{
if (indexPath.section != 2) {
[cell setCollectionViewDataSourceDelegate:self index:indexPath.section andCellType:cellType];
NSInteger index = cell.collectionViewHorizontal.tag;
CGFloat horizontalOffset = [self.contentOffsetDictionary[[@(index) stringValue]] floatValue];
[cell.collectionViewHorizontal setContentOffset:CGPointMake(horizontalOffset, 0)];
}
}
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
NSLog(@"Cell Tapped");
selectedDictionary = [quickLinksArray objectAtIndex:indexPath.row];
[self performSegueWithIdentifier:@"goToListView" sender:self];
}
如果您想查看任何其他代码,请告诉我,
希望你能提供帮助, 谢恩
答案 0 :(得分:0)
好的简单错误。我创建了一个UITableViewCell的子类,它被设计用于包含我的collectionViews的单元格。出于某种原因,我将所有tableViewCells设置为该子类,甚至是那些不应该的子类。在界面构建器中,我将单元格类更改回原始的UITableViewCell,现在它按预期处理选择。
我从中学到的经验教训: