【问题标题】:Open view Controller of Swift from Objective C class从 Objective C 类打开 Swift 的视图控制器
【发布时间】:2018-04-22 01:04:46
【问题描述】:

我有一个带有目标 c 类的视图控制器,现在我想打开包含类 swift 的视图控制器。我已经尝试了几次,但它没有打开 swift 类我如何从目标 c 类打开 swift 类。

【问题讨论】:

  • 您应该使用桥接头。请搜索以查找有关它的更多信息。
  • 我有桥接头,我现在无法从目标 c 调用 swift 类。 @D.Greg
  • 您使用的是故事板还是 XIB?这可能会帮助你pinkstone.co.uk/how-to-use-swift-classes-in-objective-c
  • 我正在使用故事板。@Nagarjun
  • 兄弟,我已经按照您提供的链接进行操作,但我收到了未找到文件的错误,我还按照教程中的说明更改了标题名称。 @Nagarjun

标签: ios objective-c swift3


【解决方案1】:

我最初遇到了同样的麻烦,但在网上搜索后我得到了成功。您应该遵循与我在下面提到的完全相同的操作:

基于 Xcode Objc 的项目的逐步 Swift 集成:

创建新的*.swift 文件(在 Xcode 中)或使用 Finder 添加它 当 Xcode 询问您时创建一个 Objective-C 桥接头 使用 @objc 属性实现您的 Swift 类:

import UIKit

@objc public class CustomView: UIView {
    override func draw(_ rect: CGRect) {
        // Drawing code
    }
}

打开构建设置并检查这些参数:

  • 定义模块:是

  • 产品模块名称:myproject

确保您的产品模块名称不包含任何特殊的 字符

  • 安装 Objective-C 兼容性标头:是

将 *.swift 文件添加到项目后,此属性将 出现在构建设置中

  • Objective-C 生成的接口头文件:myproject-Swift.h

此标头由 Xcode 自动生成

  • Objective-C 桥接头:$(SRCROOT)/myproject-Bridging-Header.h

在您的 *.m 文件中导入 Swift 接口标头

#import "myproject-Swift.h"

不要关注错误和警告。 清理并重建您的 Xcode 项目。 完毕!

【讨论】:

  • 兄弟,我也做了YES和产品模块名称,但是当我写头文件时,它只显示桥头文件。 @Umang Loriya
  • 它只在我想写头文件的目标c类中显示这个#import“PK.House-Bridging-Header.h”。
  • 实际上“PK.House-Bridging-Header.h”是用于在 Swift 中使用 Objective C 文件,但您只需将其添加到需要使用 swift 对象的 .m 文件中#导入“PK.House-Swift.h”。
  • 兄弟,我真的很抱歉,但我不明白这一点。我已经完成了上述部分,你说要做YES并更改名称,这样做之后现在该怎么办? @Umang Loriya
  • 假设你有一个名为 viewController 的目标 c 类文件,所以在 viewController.m 文件中你需要添加这一行来访问 swift 类文件:#import "PK.House-Swift.h"跨度>
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多