未从 UITableViewController 调用 didDeselectRowAtIndexPath 从情节提要添加到 UIViewController
Posted
技术标签:
【中文标题】未从 UITableViewController 调用 didDeselectRowAtIndexPath 从情节提要添加到 UIViewController【英文标题】:didDeselectRowAtIndexPath not called from UITableViewController added to UIViewController from story board 【发布时间】:2012-05-15 11:44:11 【问题描述】:我正在使用拆分视图控制器并希望将多个表视图添加到主视图控制器。
所以我可以利用(我相信)你只能从 UITableViewController 获得的原型单元,我已将 UITableViewController 放入应用程序的第二个故事板中。然后我用以下方式证实它:
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"SecondStoryboard" bundle:nil];
MyTableViewController *myTableViewController = [storyboard instantiateInitialViewController];
然后我将这个 UITableViewController 的视图添加为我的 UIViewController 的子视图。
[self.view addSubview:myTableViewController.view];
当我运行它时,我可以很好地选择和突出显示行。但是由于某种原因没有调用 didSelectRowAtIndexPath 吗?
感谢您的帮助, 理查德
【问题讨论】:
您是否设置了UITableView
的delegate
属性?
我已经检查了情节提要,并且 UITableView 的委托设置正确。一定是我将 UITableViewController 添加到 UIViewController 的方式,这会阻止我猜的调用。但是正如我所说,正在接收触摸事件,因为触摸时行按预期突出显示。
你在哪里设置属性?我曾经在init
方法中将委托设置为表视图时遇到了问题。但是您必须在加载视图后执行此操作,因此 viewDidLoad
将是正确的位置。只是为了确保这不是问题。
【参考方案1】:
添加这一行
myTableViewController.view.delegate = myTableViewController;
或确保您在 XIB(Interface Builder) 中执行相同操作。
【讨论】:
我找不到任何 myTableViewController.view.delegate 属性。【参考方案2】:原来我还需要将 uitableviewcontroller 添加为 uiviewcontroller 的子控制器。仅仅添加视图是不够的。
【讨论】:
以上是关于未从 UITableViewController 调用 didDeselectRowAtIndexPath 从情节提要添加到 UIViewController的主要内容,如果未能解决你的问题,请参考以下文章