iPad上的UITableView使用Storyboard不加载单元格

时间:2014-01-24 22:41:08

标签: uitableview core-data ios7 uisplitviewcontroller uistoryboard

我有一个UItableView,使用UIStoryboard和Core Data。在iPhone上,UITableView正常加载但不在iPad上。

tableViewController更新navBar标题并正确设置toolbarItems,因此非常确定故事板文件正常加载。加载TVC时,我打印出应填充表格的项目数(正确值),但numberOfRowsInSection显示没有项目。

在TVC内部,没有以设备为中心的代码路径。故事板中的委托和数据源被连接起来,故事板ID被设置,电视子类也是如此。

我在这里完全失败了。如果我要发布特定代码,请在评论中告诉我。

AppsListTableViewController *appsList = (AppsListTableViewController *)[self appListTableViewController];
        UINavigationController * masterNavController = [[UINavigationController alloc] initWithRootViewController:appsList];
        masterNavController.toolbarHidden = NO;
        masterNavController.navigationBar.barStyle = UIBarStyleDefault;

        if ([UIDevice currentDevice].userInterfaceIdiom == UIUserInterfaceIdiomPad) {
            BugsForAppDetailTableViewController *bugsForApp = (BugsForAppDetailTableViewController *)[self bugsForAppTVC];

            [appsList setDetailViewController:bugsForApp];

            UINavigationController * detailNavController = [[UINavigationController alloc] initWithRootViewController:bugsForApp];
            detailNavController.toolbarHidden = NO;
            detailNavController.navigationBar.barStyle = UIBarStyleDefault;

            [self.splitViewController setViewControllers:@[masterNavController, detailNavController]];
            self.splitViewController.delegate = appsList;    
        }

        else if ([UIDevice currentDevice].userInterfaceIdiom == UIUserInterfaceIdiomPhone) {
            [_drawerController setCenterViewController:masterNavController];

            [_drawerController closeDrawerAnimated:YES completion:^(BOOL finished) {
                if (finished) {

                }
            }];
        }

bugsForAppTVC getter

- (BugsForAppDetailTableViewController *)bugsForAppTVC {
    if (_bugsForAppTVC == nil) {

        UIStoryboard *storyboard = nil;
        if ([UIDevice currentDevice].userInterfaceIdiom == UIUserInterfaceIdiomPad) {
            storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard_iPad" bundle:nil];
        }   else {
            storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard_iPhone" bundle:nil];
        }

        BugsForAppDetailTableViewController * centerViewController = (BugsForAppDetailTableViewController *)[storyboard instantiateViewControllerWithIdentifier:@"BugsForAppDetailTableViewController_ID"];
        [centerViewController setMOContext:[NSManagedObjectContext MR_defaultContext]];


        _bugsForAppTVC = centerViewController;
    }

    return _bugsForAppTVC;
}

1 个答案:

答案 0 :(得分:0)

您需要将有关表格视图控制器的iPhone故事板设置与iPad故事板的设置进行比较。检查这些项目:

  • delegate设置
  • datasource设置
  • Datasource提供预期的核心数据对象
  • 控制器子类设置正确
  • 正确设置了Cell子类
  • 单元格标识符正确
  • 如有必要,表视图IBOutlet已正确定义