关于ios:如何在swift中使用两个UIViewControllers,在objective-c中使用其他一个?

How to work on two UIViewControllers one in swift and other in objective-c..?

本问题已经有最佳答案,请猛点这里访问。

我正在将目标C中的应用程序重写为swift。我想知道我是否可以在新的应用程序中使用以前的应用程序中的一些旧的UIViewControllers,而不必用swift重写它们。有可能吗?


是的,您可以使用桥接头。

当您将objective-c文件导入Swift项目(我们称之为项目myapp)时,它应该询问您是否要创建桥接头MyApp-Bridging-Header.h。如果它没有要求,你可以自己创建它,但是如果你这样做,确保你把它包含在你项目的Build Settings中的Swift Compiler - Code Generator -> Objective-C Bridging Header下。在该文件中,您可以为目标C文件编写导入,例如:

1
#import"MyUIViewController.h"

这将把它们导入到项目中,以便它们与其他swift文件兼容。然后,在您的swift类中,您可以像参考任何其他swift类一样参考该Objective-C视图控制器,例如:

1
let myUIViewController = MyUIViewController()

是的,会有用的

我也和我以前的项目一起工作,我将旧的Objective-C代码导入到Swift项目中,生成桥头,以便从Swift类访问Objective-C UIViewController。您直接在故事板uiviewcontroller中分配您的objective-c uiviewcontroller类,不需要再次为uiviewcontroller重写任何coad。如果您想访问swift controller类中的objective-c类,您需要制作第一个桥头文件,然后执行此操作。

enter image description here

1
2
3
 //In Swift Controller you can call your Objective-C Class
 let myView = MyController() // This is Objective-C controller
 myView.updatemyProfile() // Can call function like Objective-C here