在 Swift 中使用两个视图控制器连接对象
Connecting Objects with two View controllers in Swift
在我的项目中,我有两个视图控制器,我无法将 UIImageView 等对象连接到视图控制器。当我尝试创建 IBOutlet 时,它告诉我 "Could not insert new outlet collection: could not find any information for the class named UIViewController"。我相信这个问题源于我的 class 的原始声明如下:
class UIViewController: UIViewController {
实际上视图控制器被命名为 mainScene。但是,当我将第一个 UIViewController 更改为我认为应该的样子(mainScene)时,它甚至没有显示连接 IBOutlet 的选项...
class mainScene: UIViewController {
那么,我有两个问题。
我是否需要为第二个 UIViewController 使用一个完整的单独 class,这会解决我的问题吗?
是否有更好的方法 link 向 UIViewController 发送对象,或者我只是做了一些非常错误的事情(可能的情况)?
非常感谢
简短回答:1. 是的,是的。 2. 没有更好的办法,而且你也没有做错什么可怕的事情。 (您可能只是错过了一步。)
你有两个视图控制器。假设它们不同,您可以使用不同的名称从 UIViewController
中子class 每个。例如,mainSceneViewController 和 otherSceneViewController。
您的 mainSceneViewController 和 otherSceneViewController 将各自拥有自己的属性和 IBOutlets。
您可能遇到的困难是需要在 Interface Builder 中更改 viewController 的 class 以匹配其 .swift 文件中的 class 名称, 因此 IB 知道它可以为该视图控制器连接哪些插座。
故事板中的每个场景都对应一个视图控制器。执行 segue 时,iOS 从情节提要中实例化您的视图控制器。
虽然可以只有一个视图控制器子class,并为不同的视图使用相同的子class,但这种情况不会经常发生。
更新:
Subclassing 允许您向 class 添加属性和方法,并覆盖它们的 superclass.
在您的评论中,UIViewController
是 class,而 mainSceneViewController
是 class 从 UIViewController
继承而来的。对于您的第二个视图控制器,它可能是 class otherSceneViewController: UIViewController {
,因为您的其他场景可能需要与主场景视图控制器不同的属性和方法。
您可以在 Swift 编程语言指南中 read more about Inheritance。
在我的项目中,我有两个视图控制器,我无法将 UIImageView 等对象连接到视图控制器。当我尝试创建 IBOutlet 时,它告诉我 "Could not insert new outlet collection: could not find any information for the class named UIViewController"。我相信这个问题源于我的 class 的原始声明如下:
class UIViewController: UIViewController {
实际上视图控制器被命名为 mainScene。但是,当我将第一个 UIViewController 更改为我认为应该的样子(mainScene)时,它甚至没有显示连接 IBOutlet 的选项...
class mainScene: UIViewController {
那么,我有两个问题。
我是否需要为第二个 UIViewController 使用一个完整的单独 class,这会解决我的问题吗?
是否有更好的方法 link 向 UIViewController 发送对象,或者我只是做了一些非常错误的事情(可能的情况)?
非常感谢
简短回答:1. 是的,是的。 2. 没有更好的办法,而且你也没有做错什么可怕的事情。 (您可能只是错过了一步。)
你有两个视图控制器。假设它们不同,您可以使用不同的名称从 UIViewController
中子class 每个。例如,mainSceneViewController 和 otherSceneViewController。
您的 mainSceneViewController 和 otherSceneViewController 将各自拥有自己的属性和 IBOutlets。
您可能遇到的困难是需要在 Interface Builder 中更改 viewController 的 class 以匹配其 .swift 文件中的 class 名称, 因此 IB 知道它可以为该视图控制器连接哪些插座。
故事板中的每个场景都对应一个视图控制器。执行 segue 时,iOS 从情节提要中实例化您的视图控制器。
虽然可以只有一个视图控制器子class,并为不同的视图使用相同的子class,但这种情况不会经常发生。
更新:
Subclassing 允许您向 class 添加属性和方法,并覆盖它们的 superclass.
在您的评论中,UIViewController
是 class,而 mainSceneViewController
是 class 从 UIViewController
继承而来的。对于您的第二个视图控制器,它可能是 class otherSceneViewController: UIViewController {
,因为您的其他场景可能需要与主场景视图控制器不同的属性和方法。
您可以在 Swift 编程语言指南中 read more about Inheritance。