DidSelectRowAtIndexPath 永远不会被调用

Posted

技术标签:

【中文标题】DidSelectRowAtIndexPath 永远不会被调用【英文标题】:DidSelectRowAtIndexPath never get called 【发布时间】:2014-06-10 14:54:02 【问题描述】:

从今天早上开始我就遇到了一个问题,如果找不到解决方案,我会发疯的。

这是我的问题:

我有一个视图控制器,其中包含一个 UItableView 和其他一些东西......这部分没有问题:我的 tableView 调用我的 webService,并重新加载填充的 tableView。但是,当我想触发对 UItableViewCell 选择的 segue 时,什么都没有发生。

我的 tableView 数据源和委托已设置:

我尝试了几种方法,但没有任何效果:

1) 直接链接单元格上的segue 2) 在 vi​​ewController 上声明 segue 并在调用“didSelectRowAtIndexPath”时用“performSegue”调用它 3)重启Xcode(是的,我很绝望)

但是,正如我之前所说,我的 tableView 的委托和数据源方法被正确调用,除了“didSelectRowAtIndexPath”

是否有人已经遇到过这个问题并找到了解决方案?

编辑:

这里是tableView数据源方法的实现

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView

    // Return the number of sections.
    return 1;


- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section

    // Return the number of rows in the section.
    return campagneList.count; //return 2 at execution


- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath

    [self performSegueWithIdentifier:@"observatoireSegue" sender:self];
    NSLog(@"test didSelectRowAtIndexPath");

【问题讨论】:

你能显示你的didSelectRowAtIndexPath 吗?一个常见的错误也是实现didDeselectRowAtIndexPath 您对 - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 和 - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView 的实现是什么?如果其中一个返回 0,则 cellforrow 将永远不会被调用。 你为什么要从ViewController继承?你不应该从UIViewController 继承吗?或者甚至更好,如果表格是屏幕上唯一来自UITableViewController 的子类。 确保没有为情节提要中的表格视图关闭单元格选择。 如果 Fogmeister 建议的子类化不是问题,那么您可以尝试仔细查看您的 Storyboard 和 tableView 的 IBOutlet。断开 tableView、删除代码中的属性并通过创建新属性重新连接 IBOutlet 并再次设置委托/数据源可能值得一试。切换控制器时,可能会出现此区域的错误。 【参考方案1】:

您不应从 ViewController 类继承 ObservatoireView。显然编译器不会抛出任何错误或警告。如果你这样做,消息通信将不会从你的类到控制器发生。因此,如果您将父类更改为 UIViewControllerUITableViewController ,它将起作用。

@interface ObservatoireView :UIViewController <yourprotocols> 

//Rest of code goes here

@end

【讨论】:

以上是关于DidSelectRowAtIndexPath 永远不会被调用的主要内容,如果未能解决你的问题,请参考以下文章

didSelectRowAtIndexPath 没有被调用?

tableView - didSelectRowAtIndexPath 未调用

快速:didSelectRowAtIndexPath

我可以麻烦UITableViewDelegate的didSelectRowAtIndexPath:吗?

DidSelectRowAtIndexPath 使用故事板

触摸时未调用 didSelectRowAtIndexPath