如何在Swift和Objective-C中同时处理两个UIVIewControllers..?

12 浏览
0 Comments

如何在Swift和Objective-C中同时处理两个UIVIewControllers..?

这个问题已经在这里有答案了

如何从Swift调用Objective-C代码?

我正在将我的应用从Objective-C重写到Swift。

我想知道我是否可以在新应用程序中使用我的以前应用程序中的某些旧UIViewControllers,而无需在Swift中重新编写这些内容。

这是可能的吗?

admin 更改状态以发布 2023年5月22日
0
0 Comments

是的,它将起作用

我之前的项目中也这样做了,我将我的旧Objective-C代码导入到Swift项目中,并为从Swift类访问Objective-C UIViewController而制作了桥接头文件。您可以直接在StoryBoard UIViewController中分配您的Objective-C UiViewcontroller类,无需为UIViewController重新编写任何代码。如果您想在Swift控制器类中访问Objective-C类,您需要首先制作桥接头文件,然后执行此操作。

enter image description here

 //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

0
0 Comments

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

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

#import "MyUIViewController.h"

这将把它们导入到项目中,使它们与其他 Swift 文件兼容。
然后在你的 Swift 类中,你可以像任何其他 Swift 类一样引用那个 Objective-C 视图控制器,比如:

let myUIViewController = MyUIViewController()

0