繁体   English   中英

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

[英]Connecting Objects with two View controllers in Swift

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

    class UIViewController: UIViewController {

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

    class mainScene: UIViewController {

所以,我有两个问题。

  1. 我是否需要为第二个UIViewController提供一个单独的类,这是否可以解决我的问题?

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

非常感谢

简短答案:1.是,是。 2.没有更好的方法,并且您没有做错什么。 (您可能只错过了一步。)

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

您的mainSceneViewController和otherSceneViewController将各自具有自己的属性和IBOutlet。

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

故事板上的每个场景都对应一个视图控制器。 执行segue后,iOS将从情节提要中实例化视图控制器。

虽然可能只有一个视图控制器子类,并且对不同的视图使用相同的子类,但是这种情况并不太常见。

更新:

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

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

您可以在《 Swift编程语言》指南中阅读有关继承的更多信息

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM