在Swift中将对象连接到两个View控制器

在我的项目中,我有两个视图控制器,而且我无法将对象(如UIImageView)连接到视图控制器。 当我尝试创buildIBOutlet时,它告诉我“无法插入新的sockets集合:无法find名为UIViewController的类的任何信息”。 我相信这个问题是因为我最初的class级宣言如下:

class UIViewController: UIViewController { 

实际上视图控制器被命名为mainScene。 但是,当我改变了第一个UIViewController到我认为应该是(mainScene),它甚至没有显示我连接IBOutlet的选项…

  class mainScene: UIViewController { 

所以,我有两个问题。

  1. 我是否需要为第二个UIViewController创build一个完整的单独的类并解决我的问题?

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

非常感谢

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

你有两个视图控制器。 假设它们不同,你可以从UIViewController以不同的名字UIViewController每一个。 例如,mainSceneViewController和其他的SceneViewController。

你的mainSceneViewController和其他的SceneViewController都会有自己的属性和IBOutlets。

在那里你可能卡住了,需要在Interface Builder中改变你的viewController的类,以匹配它的.swift文件中的类名,所以IB知道它可以连接到视图控制器的sockets。

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

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

更新:

通过子类化,可以将属性和方法添加到类中,并覆盖它们的超类。

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

您可以在Swift编程语言指南中阅读有关inheritance的更多信息 。