从 Objective-C 加载基于 Swift 的 UIViewController
Loading a Swift based UIViewController from Objective-C
我正在尝试加载一个视图控制器 nib,其文件所有者是一个基于 Swift 的 UIViewController class。此时的视图控制器非常简单——只有一个标签 (lblResult
),其内容在运行时设置。加载视图控制器时,出现以下错误:
this class is not key value coding-compliant for the key lblResult
我知道这通常是因为文件的所有者没有在 Interface Builder 中设置,但是,在我的例子中它是设置的。我已验证 lblResult
的 IBOUtlet 已正确设置,并且视图 属性 也已正确设置。这里唯一真正的区别是我试图在用 Objective-C.
编写的应用程序中加载基于 swift 的视图控制器
在我的视图控制器中 class 我将 UILabel 属性 设置如下:
@IBOutlet weak var lblResult: UILabel!
并将其值设置如下:
lblResult.text = "Time \(hour):\(minute):\(second)"
在我的 Obj-C 调用 class 中,我按如下方式实例化视图控制器:
viewController = [[UIViewController alloc] initWithNibName:@"SwfViewController" bundle:nil];
当没有设置插座时笔尖加载到视图中,但是当有 IBOutlets 时,我得到错误。关于为什么会发生这种情况的任何线索?谢谢!
这个视图控制器是否存在于您的情节提要中?如果是,则需要通过调用加载view controller。
viewController = self.storyboard?.instantiateViewControllerWithIdentifier("SwfViewController") as SwfViewController
确保将情节提要中的视图控制器的标识符设置为 SwfViewController。
故事板应该看起来像这样。
如果您的 nib 是一个视图并且所有者是一个视图控制器,请确保将您的视图控制器的 view
属性 连接到 nib 视图。如果您的 nib 是一个视图控制器,而不是设置文件所有者,只需将视图控制器的 Custom Class
设置为 SwfViewController。
我正在尝试加载一个视图控制器 nib,其文件所有者是一个基于 Swift 的 UIViewController class。此时的视图控制器非常简单——只有一个标签 (lblResult
),其内容在运行时设置。加载视图控制器时,出现以下错误:
this class is not key value coding-compliant for the key lblResult
我知道这通常是因为文件的所有者没有在 Interface Builder 中设置,但是,在我的例子中它是设置的。我已验证 lblResult
的 IBOUtlet 已正确设置,并且视图 属性 也已正确设置。这里唯一真正的区别是我试图在用 Objective-C.
在我的视图控制器中 class 我将 UILabel 属性 设置如下:
@IBOutlet weak var lblResult: UILabel!
并将其值设置如下:
lblResult.text = "Time \(hour):\(minute):\(second)"
在我的 Obj-C 调用 class 中,我按如下方式实例化视图控制器:
viewController = [[UIViewController alloc] initWithNibName:@"SwfViewController" bundle:nil];
当没有设置插座时笔尖加载到视图中,但是当有 IBOutlets 时,我得到错误。关于为什么会发生这种情况的任何线索?谢谢!
这个视图控制器是否存在于您的情节提要中?如果是,则需要通过调用加载view controller。
viewController = self.storyboard?.instantiateViewControllerWithIdentifier("SwfViewController") as SwfViewController
确保将情节提要中的视图控制器的标识符设置为 SwfViewController。
故事板应该看起来像这样。
如果您的 nib 是一个视图并且所有者是一个视图控制器,请确保将您的视图控制器的 view
属性 连接到 nib 视图。如果您的 nib 是一个视图控制器,而不是设置文件所有者,只需将视图控制器的 Custom Class
设置为 SwfViewController。