DidSelectRowAtIndexPath 永远不会被调用
Posted
技术标签:
【中文标题】DidSelectRowAtIndexPath 永远不会被调用【英文标题】:DidSelectRowAtIndexPath never get called 【发布时间】:2014-06-10 14:54:02 【问题描述】:从今天早上开始我就遇到了一个问题,如果找不到解决方案,我会发疯的。
这是我的问题:
我有一个视图控制器,其中包含一个 UItableView 和其他一些东西......这部分没有问题:我的 tableView 调用我的 webService,并重新加载填充的 tableView。但是,当我想触发对 UItableViewCell 选择的 segue 时,什么都没有发生。
我的 tableView 数据源和委托已设置:
我尝试了几种方法,但没有任何效果:
1) 直接链接单元格上的segue 2) 在 viewController 上声明 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
。显然编译器不会抛出任何错误或警告。如果你这样做,消息通信将不会从你的类到控制器发生。因此,如果您将父类更改为 UIViewController
或 UITableViewController
,它将起作用。
@interface ObservatoireView :UIViewController <yourprotocols>
//Rest of code goes here
@end
【讨论】:
以上是关于DidSelectRowAtIndexPath 永远不会被调用的主要内容,如果未能解决你的问题,请参考以下文章
didSelectRowAtIndexPath 没有被调用?
tableView - didSelectRowAtIndexPath 未调用