0

我有一个UITableView当按下时,应该推动另一个视图控制器,但didSelectRowAtIndexPath没有被调用。我正在使用另一个视图控制器,PhotoCell广告单元格有任何影响。提前致谢!这是表格的代码。

#pragma mark - Table view data source

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    //    NSInteger sections = self.objects.count;
    //    if (self.paginationEnabled && sections != 0)
    //        sections++;
    //    return sections;
    return 1;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return 1;
}

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
//    if (indexPath.section >= self.objects.count) {
//        // Load More Section
//        return 320.0f;
//    }
//    
    return 320.0f;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"PhotoCell";
    PhotoCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

    if (cell==nil) {
        cell = [[PhotoCell alloc]initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier];

    }

    [cell setThumbImage:self.thumbImage];
    cell.imageView.image = self.thumbImage;
    [cell setExclusiveTouch:YES];
    return cell;
}

//this is what i need to look at

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    DetailViewController *detailsViewController = [[DetailViewController alloc] init];
    [self.navigationController pushViewController:detailsViewController animated:YES];

    NSLog(@"Pushing row at index path");
}

这是我定义表格的地方

[self.tableView registerClass: [PhotoCell class] forCellReuseIdentifier:@"PhotoCell"];
self.tableView = [[[UITableView alloc] initWithFrame:CGRectMake(0, 0, 320, 568) style:UITableViewStylePlain] autorelease];
[self.tableView setDelegate: self];
[self.tableView setDataSource:self];
[self.scrollView addSubview:self.tableView];
self.tableView.separatorColor = [UIColor clearColor];
4

3 回答 3

3

假设您在界面生成器中设置了推送转场,我将继续进行盲目猜测。

在这种情况下tableView:didSelectRowAtIndexPath:,当 segue 被触发时不会被调用。如果你需要在 segue 执行之前做额外的设置,你可以实现 prepareForSegue:sender:.

于 2013-11-11T18:45:19.320 回答
1

就我而言,问题出在选择属性中,它是“无选择”。当我将它从“无选择”更改为任何其他值时,didSelectRowAtIndexPath 方法开始起作用。 在此处输入图像描述

于 2014-12-08T15:03:12.957 回答
0

很难说确切的原因,但有一些事情可以尝试:

  1. 您正在创建一个 tableView,但由于某种原因它不会调用委托和数据源方法。首先,在您创建 UITableView 的行之间放置一个断点,并确保程序运行该代码。
  2. 你在为那个 ViewController 使用 IB 吗?xib 文件上有 UITableView 吗?因为您正在以编程方式创建 UITableView,所以一个 UITableView 可能位于另一个之上。使用 IB 几乎总是更容易。
  3. 从 UIScrollView 中删除 tableView。我不知道这里的确切架构,但是两个相互叠加的滚动视图从来都不是一个好主意,并且总是会导致问题(在堆栈溢出时在 UIScrollView 上搜索 UITableView,你会看到)。请记住,UITableView 本身就是一个 UIScrollView。
  4. 从您的单元格中删除 ExclusiveTouch,这也可能导致问题
  5. 尝试删除 autorelease 语句。你没有使用ARC,所以在dealloc方法中释放tableView。也使用 [_tableView release] 而不是 [self.tableView release]。
于 2013-11-11T21:33:21.007 回答