【问题标题】:Segue from objective c to swift从目标 c 转为 swift
【发布时间】:2015-01-26 11:55:56
【问题描述】:

我需要从 Objective C 视图控制器转换为 Swift 视图控制器,并将数据传递给新的视图控制器。

在 Objective C 中,我会:

#include "SecondViewController.h"

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
   SecondViewController *svc = [segue destinationViewController];
   svc.property = self.property;
}

在转入 Swift 视图控制器时如何实现相同的效果?

我尝试过包含“SecondViewController.swift”,但这只会引入错误并且不允许我在 PrepareForSegue 中使用 SecondViewController *svc:无论如何。

【问题讨论】:

    标签: ios objective-c swift


    【解决方案1】:

    您必须导入名称为<module_name>_Swift.h 的swift bridge 头文件。例如,如果您的项目名为MyProject

    #import "MyProject-Swift.h"
    

    请注意,这不是用于将 objc 代码公开给 swift 的桥接头,名为 <module_name>-Bridging-Header.h

    【讨论】:

    • 该文件仅包含: // // 使用此文件导入您希望向 Swift 公开的目标的公共标头。 //
    • 您正在查看桥接头,他的意思是 Xcode 生成的标头。它在 Xcode 中不可见,但应该按照上面的说明导入。阅读文档:developer.apple.com/library/prerelease/ios/documentation/Swift/…
    • 感谢@bjtitus - user2055369,该文件未在项目导航器中列出,但您可以通过 cmd+单击导入语句中的名称打开。它包含您的 swift 代码的客观 c 表示,因此为了从 obj-c 访问 swift 类,您需要 #import 它
    • 是的。谢谢你。都非常有帮助。 Apple 的文档不清楚,Xcode 不会自动完成 MyProject-Swift.h,所以这一切都相当混乱。
    • 是的,它可以工作,但我认为无法将其标记为“已回答”。我也会在今晚晚些时候发布一个后续问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-01
    • 1970-01-01
    相关资源
    最近更新 更多