关于 addChildViewController: 添加的是 UITableViewController,不能交互的问题

TestTableViewController *obj = [[TestTableViewController alloc] initWithNibName:NSStringFromClass([TestTableViewController class]) bundle:nil];
    
    [self addChildViewController:obj];
    obj.tableView.frame = self.view.frame;
    [self.view addSubview:obj.tableView];
    [obj didMoveToParentViewController:self];
    

    
    
//    TestViewController *obj = [[TestViewController alloc] initWithNibName:NSStringFromClass([TestViewController class]) bundle:nil];    
//    [self addChildViewController:obj];
//    obj.view.frame = self.view.frame;
//    [self.view addSubview:obj.view];
//    [obj didMoveToParentViewController:self];

上面代码唯一的区别是:一个是 UITableViewController,一个是UIViewController。

addChildViewController: 添加一个 UIViewController 是能正常交互的,比如我在里面放了个 tableView, 是可以正常滚动的;但是如果我 addChildViewController:的是个 UITableViewController,却不能交互,有大佬遇到过这种情况吗?

阅读 4.8k
3 个回答

楼上分析正确。但是 xib 设置有效属性,cell 未满屏也可滑动。亲测有效。图片描述

1.采用storyboard的方式:

TestTableViewController *obj = [[UIStoryboard storyboardWithName:@"Storyboard" bundle:nil] instantiateViewControllerWithIdentifier:@"TestTableViewController"];

放了几个静态cell,测试滑动正常,通过

2.采用xib方式创建TestTableViewController

TestTableViewController *obj = [[TestTableViewController alloc] init];
//...

// viewDidLoad
[self.tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:@"123"];
self.tableView.delegate = self;
self.tableView.dataSource = self;

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

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    return 3;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"123" forIndexPath:indexPath];
    // Configure the cell...

    return cell;
}

确实不能滑动,原因是cell排不满,高度小于UITableView的屏幕高度
修改数据,改成 30个cell,正常滑动

所以楼主 遇到的问题其实是 用xib创建了但未摆满一屏

新手上路,请多包涵

666666666

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题