didSelectRowAtIndexPath没有被UITableViewController从框架中调用

时间:2016-03-21 16:05:02

标签: ios uitableview uiviewcontroller frameworks didselectrowatindexpath

我创建了一个包含UITableViewController的框架。出于某种原因,当我使用这个框架并创建这个VC时,它会完美地加载,并且数据源方法工作得很好,看起来就像它应该的那样。但是,当我点击细胞时,绝对没有任何反应。我知道它应该工作,因为当我在框架中使用这个VC时,它工作正常。

我只为NSLog设置了didSelectRowAtIndexPath个语句,但它们根本没有被调用。为什么不使用框架中的VC使{{​​1}}不被调用?

编辑:我发现这个问题与我正在使用的SlidingNavigationController有关。

具体来说,如果我在didSelectRowAtIndexPath中使用以下代码,那么一切正常:

applicationDidFinishLaunchingWithOptions

但是,如果我在项目中的任何其他位置使用该SAME代码(例如, NSString *bundlePath = [[NSBundle mainBundle] pathForResource:@"Lights" ofType:@"bundle"]; NSBundle *lights = [NSBundle bundleWithPath:bundlePath]; UIStoryboard *sb = [UIStoryboard storyboardWithName:@"Main" bundle:lights]; SlideNavigationController *nc = (SlideNavigationController*)[sb instantiateViewControllerWithIdentifier: @"SlideNavigationController"]; ViewController *vc = [sb instantiateViewControllerWithIdentifier:@"ViewController"]; MenuViewController * _mvc = [[MenuViewController alloc] initWithNibName:@"MenuViewController" bundle: lights]; [SlideNavigationController sharedInstance].leftMenu = _mvc; [SlideNavigationController sharedInstance].rightMenu = vc; self.window.rootViewController = nc; 中的按钮启动此VC序列),则storyboard无响应。

将该代码放入TableView

有什么特别之处

1 个答案:

答案 0 :(得分:0)

好的,我的回答是,如果您的UITableViewDelegate方法已在MenuViewController中实施,请删除以下代码。

leftMenu.tableView.delegate = self;

并在MenuViewController内部告诉tableView self是代表,如:

// in MenuViewController.m
- (void)viewDidLoad {
    [super viewDidLoad];
    self.tableView.delegate = self;
}