【问题标题】:How to subview a UITableViewController within another Controller using Storyboards如何使用 Storyboards 在另一个控制器中子视图 UITableViewController
【发布时间】:2012-04-26 21:59:53
【问题描述】:

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

我想将此逻辑和视图嵌入到另一个视图控制器/视图中(有点像标题信息,下面有一个可滚动的表格。)

我有以下组件: 链接到 UIView 的 CustomViewController(从情节提要中拖入) 链接到 UITableView 的 CustomTableViewController(从情节提要中拖入)

基本上我是在尝试在 iOS 时钟应用中模仿秒表的场景

  • 什么是野兽方法?
  • 如何以编程方式完成?
  • 这可以在情节提要上以某种方式完成吗?

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

【问题讨论】:

  • 我不太明白...要添加 UIViewController 作为子视图吗?
  • “野兽的方法”,原始的!

标签: ios uiviewcontroller embed uitableview


【解决方案1】:

好的,想通了。这个解决方案是 iOS 5 特有的,因为这个功能是在那里添加的。此方法适用于情节提要。

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

  1. 由于没有内在的方式来引用故事板中的子视图控制器,我们需要给视图控制器一个名称。这可以通过在情节提要的控制器上填写“标识符”属性来完成。注意:确保为控制器提供标识符,而不是控制器视图。

  2. 实例化您要聚合的控制器。这可以从主机控制器完成。

    UIViewController *controller = [self.storyboard instantiateViewControllerWithIdentifier:@"ControllerIdentifier"];
    
  3. 将子控制器添加到父控制器

    [self addChildViewController: controller];
    
  4. 将子控制器视图添加到父控制器视图。请注意,如果您希望将子视图添加到的父控制器中有一个占位符视图,那么这就是您执行此操作的地方。这里我在父控制器中添加了一个 UIView,叫做 stage。

    [self clearStage]; 
    [self.stageView addSubview:controller.view];
    presentedController.view.frame = self.stageView.bounds;
    

就是这样。很简单。我已经成功地将它用于切换控制器并在自制选项卡控件中查看。子控制器在视图生命周期中登记其视图,因此viewDidLoad 等都在此子视图控制器中按预期工作。

希望这对某人有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-10-02
    • 1970-01-01
    • 1970-01-01
    • 2014-07-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多