在Swift中使用两个View控制器连接对象

时间:2015-06-13 19:43:27

标签: ios swift uiviewcontroller

在我的项目中,我有两个视图控制器,我无法将对象(如UIImageView)连接到视图控制器。当我尝试创建IBOutlet时,它告诉我“无法插入新的插座集合:无法找到名为UIViewController的类的任何信息”。我相信这个问题源于我的班级原始声明如下:

    class UIViewController: UIViewController {

实际上视图控制器名为mainScene。但是,当我将第一个UIViewController更改为我认为它应该是(mainScene)时,它甚至没有向我显示连接IBOutlet的选项......

    class mainScene: UIViewController {

所以,我有两个问题。

  1. 我是否需要为第二个UIViewController创建一个完整的单独类,这会解决我的问题吗?

  2. 有没有更好的方法将对象链接到UIViewController,或者我只是做了一些可怕的错误(可能的情况)?

  3. 非常感谢

1 个答案:

答案 0 :(得分:0)

简短回答:1。是的,是的。没有更好的方法,而且你没有做出可怕的错误。 (你可能只是错过了一步。)

您有两个视图控制器。假设它们不同,您可以使用不同的名称从UIViewController继承每一个。例如,mainSceneViewController和otherSceneViewController。

你的mainSceneViewController和otherSceneViewController都有自己的属性和IBOutlets。

您可能卡住的地方,需要在Interface Builder中更改viewController的类以匹配其.swift文件中的类名,因此IB知道它可以为该视图控制器连接哪些出口。

故事板中的每个场景都对应一个视图控制器。执行segue时,iOS会从故事板中实例化您的视图控制器。

虽然可能只有一个视图控制器子类,并且对不同的视图使用相同的子类,但它不会经常发生。

<强>更新

子类化允许您向类添加属性和方法,并覆盖它们的超类。

在您的评论中,UIViewController是该类,mainSceneViewControllerUIViewController的子类。对于您的第二个视图控制器,它可能是class otherSceneViewController: UIViewController {,因为您的其他场景可能需要来自主场景视图控制器的不同属性和方法。

您可以在Swift编程语言指南中read more about Inheritance