【问题标题】:How to use XIB in a Swift project iOS如何在 Swift 项目 iOS 中使用 XIB
【发布时间】:2015-07-24 15:33:08
【问题描述】:

我有两个独立的 Xcode 项目,我将它们融合为一个项目:一个使用 XIB 文件实现的语音到文本识别器,用 Objective-C 编写,另一个项目只是一个用 Swift 编写的传统 UI还有一些东西。这两个项目本身都完美无缺。 我已经清除了所有错误,并创建了一个桥接头文件。到目前为止,Swift 和 Objective-C 模块共存,但显然只有 Swift 部分运行。 我想打开 Objective-C XIB 并将其显示在我的 swift 编码 UI 中。

【问题讨论】:

  • 什么是“传统 UI”(相对于 XIB 文件)?为什么只有 Swift 部分运行这么明显?
  • @conventional 意味着它有一个按钮、一个文本框、某种 hello world 功能......用 swift 编码。它运行良好。现在......我的问题是......现在ObjectiveC XIB类等都在同一个项目中,我如何加载XIB?我是一名 Android 开发人员,所以我的 iOS 想象力太菜鸟,不知道下一步该采取什么措施。

标签: ios objective-c xcode swift xib


【解决方案1】:

根据您的屏幕截图,我假设您在 Swift 应用程序中为您的 UI 使用故事板。

由于您的旧 UI 位于 XIB 文件上,因此您需要以编程方式加载它。为此,您必须使用loadNibNamed 方法,如下例所示:

var nibs = NSBundle.mainBundle().loadNibNamed("Counter", owner: self, options: nil)
for v in nibs {
    if (v is Counter) {
       someViewInStoryboard.addSubview(v)
   }
}

这里我有一个 Counter.xib 文件,其中包含一个自定义 UIView。这个视图的类是Counter,它扩展了UIView

因此,当您的 XIB 加载时,浏览它以找到您的自定义视图,然后将其添加为故事板中现有 UIView 的子视图。在我的示例中,变量someViewInStoryboard 是这个UIViewIBOutlet

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-09-26
    • 1970-01-01
    • 2013-01-07
    • 2020-03-08
    • 1970-01-01
    • 1970-01-01
    • 2016-10-08
    相关资源
    最近更新 更多