【问题标题】:UIViewController sub-subclass not recognized in Xcode 6.0 Beta when using Swift使用 Swift 时,Xcode 6.0 Beta 中无法识别 UIViewController 子类
【发布时间】:2014-06-13 22:55:39
【问题描述】:

我正在尝试将一个简单的应用程序从 Objective C 转换为 Swift。它基于一个 BaseViewController,然后对其进行子类化。

我创建了一个只有这两个类的项目 - BaseViewController 和 ChildViewController。

ChildViewController 有一个 xib 文件,当我右键单击文件属性时,我希望看到 BaseViewController 的 IBOutlets - 但我没有,并且视图属性也不再存在。

BaseViewController

import UIKit

class BaseViewController: UIViewController {

    @IBOutlet var customButton: UIBarButtonItem
    @IBOutlet var _activityIndicator:UIActivityIndicatorView

    init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: NSBundle?) {
        super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)
    }

    override func viewDidLoad() {
        super.viewDidLoad()
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }


    @IBAction func customButtonAction() {    
    }
}

ChildViewController

import UIKit

class ChildViewController: BaseViewController {

    init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: NSBundle?) {
        super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)
    }

    override func viewDidLoad() {
        super.viewDidLoad()
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }

    override func customButtonAction() {
    }
}

我认为 swift 类的初始化与 Objective-c 不同,如果上述方法不再适用于 swift,是否有另一种方法可以完成同样的事情?

【问题讨论】:

  • “如果上述方法有效” 那么你没有问题。你想让别人为你测试代码吗?
  • 感谢您的回复 - 我的措辞可能有误 - 代码可以编译,但我在子控制器中看不到任何基本控制器的 IBOutlets
  • 你也应该改一下标题——现在的标题非常一般。

标签: uiviewcontroller subclass swift xcode6


【解决方案1】:

你做得对。这似乎是当前 Xcode 6.0 (6A215l) 版本中的一个错误。

继承很简​​单,缺少的IBOutletsinit无关。使用 Swift 时,界面构建器组件似乎根本无法识别 ChildViewControllerUIViewController。我确信它会在以后的 Xcode 版本中修复。

编辑:这已在 Xcode 6 Beta 3 中修复。来自发行说明:

您现在可以将插座的类型声明为已实现的类 在 Swift 中并将其连接到 Interface Builder 文档中的对象。 您还可以在 Swift 类中声明插座并将它们连接到 Interface Builder 文档中其子类之一的实例。

【讨论】:

  • 感谢您的回复。我会向 Apple 提交错误报告。
猜你喜欢
  • 1970-01-01
  • 2014-06-07
  • 1970-01-01
  • 2016-10-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多