如何使用Storyboard在另一个Controller中子视图UITableViewController

Sla*_*ppy 12 embed uitableview uiviewcontroller ios

我已将所有表视图逻辑封装在链接到视图的UITableViewController上.这是使用故事板完成的.

我想在另一个视图控制器/视图中嵌入这个逻辑和视图(有点像下面带有可滚动表的标题信息.)

我有以下组件:CustomViewController链接到UIView(从故事板中拖入)CustomTableViewController链接到UITableView(从故事板中拖入)

基本上我试图模仿iOS时钟应用程序中秒表的场景

  • 这种野兽方法是什么?
  • 它是如何以编程方式完成的?
  • 这可以在故事板上以某种方式完成吗?

任何帮助将不胜感激.谢谢

Sla*_*ppy 25

好想通了.此解决方案是iOS 5特定的,因为此处添加了此功能.此方法适用于故事板.

设置:目的是在另一个控制器中托管一个视图控制器视图和逻辑.

  1. 由于没有内在的方法来引用故事板中的子视图控制器,我们需要为视图控制器命名.这可以通过填充故事板中控制器上的"标识符"属性来完成.注意:确保为控制器提供标识符而不是控制器视图.

  2. 实例化要聚合的控制器.这可以从托管控制器完成.

    UIViewController *controller = [self.storyboard instantiateViewControllerWithIdentifier:@"ControllerIdentifier"];
    
    Run Code Online (Sandbox Code Playgroud)
  3. 将子控制器添加到父控制器

    [self addChildViewController: controller];
    
    Run Code Online (Sandbox Code Playgroud)
  4. 将子控制器视图添加到父控制器视图.请注意,如果您希望将子视图添加到父控制器中的占位符视图,则可以在此处执行此操作.在这里,我在父控制器中添加一个名为stage的UIView.

    [self clearStage]; 
    [self.stageView addSubview:controller.view];
    presentedController.view.frame = self.stageView.bounds;
    
    Run Code Online (Sandbox Code Playgroud)

就是这样.很简单.我已成功使用它与切换控制器和在自制选项卡控件中查看.子控制器在视图生命周期中查看其视图,因此viewDidLoad等等都在此子视图控制器中按预期工作.

希望这有助于某人.