如何将字符串返回到调用当前objective-c视图的Swift视图?

hun*_*erp 0 objective-c ios swift

我从View1开始使用swift,我调用View2,它在objective-c中,我在View2中收集输入,我想将一个String返回给View1.

最简单的方法是什么?

kei*_*ter 5

设置Swift文件以引用Objective-C代码:

  1. #import要在Swift(ViewController2.h)中使用的Objective-C头文件进入自动生成ProjectName-Bridging-Header.h.还导入导入文件所依赖的任何框架.

设置Objective-C文件以引用Swift代码:

  1. 在您的构建设置中:
    • 设置Embedded Content Conatins Swift CodeYes
    • 设置Install Objective-C Compatibility HeaderYes
    • 从中获取文件名Objective-C Generated Interface Header Name.这看起来像ProjectName-Swift.h
  2. 在Swift类中,添加@objc如下:
    • @objc class ViewController1: UIViewController { ... }
  3. ViewController2.m.h,#import "ProjectName-Swift.h.这可能会也可能不会自动完成,因此请输入.

现在,您将设置为引用不同语言的视图控制器.我们假设这ViewController1是父视图控制器ViewController2.你现在可以像这样传回字符串:

NSString *input = // get the input
ViewConrtoller1 *viewContr1 = (ViewConrtoller1 *)self.parentViewController;
viewContr1.stringInput = input;
Run Code Online (Sandbox Code Playgroud)

或者从:ViewController1ViewController2:

// in prepare for segue
let someString = // whatever you want to pass
let viewContr2 = segue.destinationViewController as! ViewController2
viewController2.someString = someString 
Run Code Online (Sandbox Code Playgroud)