【问题标题】:Swift Loading a View from a XIB从 XIB 快速加载视图
【发布时间】:2016-09-28 02:22:06
【问题描述】:

我一直在关注本教程,以便在视图控制器中按下按钮来加载 xib: http://www.thomashanning.com/loading-a-view-from-a-xib/

在这一行:

if let customView = NSBundle.mainBundle().loadNibNamed("CustomView", owner: self, options: nil).first as? CustomView {

我收到以下错误: 使用未声明的类型“CustomView”

我已经多次按照教程的每一步,我不知道我错过了什么。任何人都可以帮助了解可能出现的问题吗?

【问题讨论】:

  • 显然是的。但我做到了……
  • 选择您的 CustomView.swift 文件并在 Xcode 的信息面板中检查其目标框已正确检查,可能它没有正确定位。
  • 在目标会员中,它是我的项目名称,并且被选中
  • 而你写if let customView ...并得到这个错误的文件也有相同的目标?
  • 选中,是的,它具有相同的目标。还有什么想法吗?乐于尝试任何事情

标签: xcode swift view xib


【解决方案1】:

错误表明您错过了声明类的步骤

使用未声明的类型'CustomView'

可能会错过几件事:

  1. 您没有创建CustomView.swift 文件,本教程跳过了这部分。该文件应包含以下内容:

    import UIKit
    
    class CustomView: UIView {
      @IBAction func ButtonDidPressed(sender: AnyObject) {
        print("Button Pressed")
      }
    }
    

    对应的错误(在编辑器中):

    使用未声明的类型'CustomView'

  2. 在 Storyboard Identity Inspector 中,您没有正确设置类名。

    对应的错误(在运行时):

    Interface Builder 文件中的未知类 CustomView。

  3. 您的类声明与调用不完全相同,但我认为您应该能够在Xcode 编辑器中识别这种情况。

    对应的错误(在编辑器中):

    使用未声明的类型'CustomView'

【讨论】:

  • 很棒的分析,我第一次想将 File's Owner 设置为 CustomView
  • 感谢您的详细解答。我已经经历了你所有的观点,但没有一个有帮助。创建的任何新类似乎都有问题。我不能调用它的实例,只能调用我创建的旧类的实例。
  • 这里是工作项目。尝试和比较。我没有尝试修复约束,但在其他方面遵循了教程。链接。dl.dropboxusercontent.com/u/15024098/example.zip
【解决方案2】:

您可以使用这种方式为 UIView 类和 View/.Xib 赋予相同的名称

let alert = NSBundle.mainBundle().loadNibNamed("PromotionMenu", owner: nil, options: nil)[0] as? PromotionMenu
        alert?.delegate = self
        self.view.addSubview(alert!)

【讨论】:

    【解决方案3】:

    感谢大家的详细回答,很遗憾,他们都没有帮助。

    发生的事情没有任何逻辑,因为我无法创建任何类型的任何新类并正确调用它们。

    因此,经过数小时的挫折后我创建了一个新项目,将所有旧文件拖入其中(plist 除外),运行后我能够创建新类并创建它们的实例而不会出错。强>

    【讨论】:

      猜你喜欢
      • 2018-04-03
      • 1970-01-01
      • 1970-01-01
      • 2015-01-02
      • 1970-01-01
      • 1970-01-01
      • 2017-10-20
      • 2012-05-14
      • 2017-12-04
      相关资源
      最近更新 更多