StoryBoard处理继承的视图控制器

时间:2012-12-21 04:55:51

标签: objective-c storyboard

我是故事板的新手。我曾经使用代码创建我的视图。我有一个问题。

我创建了一个视图控制器

@interface FunctionViewController : UIViewController

我已经使用我的代码添加

  1. 全屏按钮(字母:0.5)
  2. 中间的一个类似弹出窗口的视图(不是全屏)
  3. 然后我创建了另一个Viewcontroller

    @interface PlayFunctionViewController : FunctionViewController
    

    并在类似弹出窗口的视图中添加一些视图

    我想通过使用故事板重新创建这些东西。

    如何使用界面构建器和故事板构建这些内容 我不需要在FunctionViewController的每个子类中布局全屏按钮和类似弹出窗口的视图吗?

2 个答案:

答案 0 :(得分:8)

您不能在故事板中的子类中继承超类的布局,即,如果您可视地在故事板中的视图控制器中布置元素并将它们连接到代码,该视图控制器的子类,甚至其他实例同一类的,必须单独列出,不会自动填充或更新。

换句话说,在故事板中,您必须手动布局并连接添加到故事板的每个单独实例和子类中的所有界面元素。这为您提供了灵活性,您可以在整个应用程序中重用同一个类的多个实例,并以不同方式进行布局,但它不能让您继承布局。

如果要在子类中继承布局,请在超类的viewDidLoad中以编程方式进行布局,然后所有子类都将具有这些界面元素,即使您在其中设计并布局它们也是如此故事板(它们在故事板中不可见,但是在构建和运行应用程序时它们会出现。)


基本上,如果您希望在类及其所有子类中具有相同的接口元素,请以编程方式创建它们,并且它们将存在于所有实例和子类实例中,即使您在自己的实例和子类实例中创建和设计实例也是如此。故事板中。

您可以混合使用代码和故事板,这样您就可以在故事板中创建一些元素,但需要在代码中创建所有实例和子类中的其他元素。

答案 1 :(得分:0)

我遇到了类似的问题,虽然这很费时但是创建一个委托并在多个视图控制器中重用它是一个更好的解决方案。虽然这超过了“继承”的重点。