Ios 如何向调用当前objective-c视图的Swift视图返回字符串?
我从使用swift的View1开始,调用objective-c中的View2,在View2中收集输入,我想向View1返回一个字符串Ios 如何向调用当前objective-c视图的Swift视图返回字符串?,ios,objective-c,swift,Ios,Objective C,Swift,我从使用swift的View1开始,调用objective-c中的View2,在View2中收集输入,我想向View1返回一个字符串 最简单的方法是什么?将Swift文件设置为引用Objective-C代码: #将要在Swift(ViewController2.h)中使用的Objective-C头文件导入 自动生成的ProjectName桥接头.h。也输入任何 导入的文件所依赖的框架 将Objective-C文件设置为参考Swift代码: 在生成设置中: 将嵌入式内容控制系统Swift cod
最简单的方法是什么?将Swift文件设置为引用Objective-C代码:
#将要在Swift(ViewController2.h
)中使用的Objective-C头文件导入
自动生成的ProjectName桥接头.h
。也输入任何
导入的文件所依赖的框架
- 将
设置为嵌入式内容控制系统Swift code
Yes
- 将
设置为Install Objective-C Compatibility Header
Yes
- 从
Objective-C生成的接口头名称中获取文件名。这看起来像
ProjectName Swift.h
@objc
,如下所示:
@objc class ViewController1:UIViewController{…}
ViewController2.m
或.h
中,#import“ProjectName Swift.h
。这可能会自动完成,也可能不会自动完成,因此请键入它ViewController1
是ViewController2
的父视图控制器。您现在可以按如下方式传递字符串:
NSString *input = // get the input
ViewConrtoller1 *viewContr1 = (ViewConrtoller1 *)self.parentViewController;
viewContr1.stringInput = input;
或者从ViewController1
转到ViewController2
:
// in prepare for segue
let someString = // whatever you want to pass
let viewContr2 = segue.destinationViewController as! ViewController2
viewController2.someString = someString
将Swift文件设置为参考Objective-C代码:
#将要在Swift(ViewController2.h
)中使用的Objective-C头文件导入
自动生成的ProjectName桥接头.h
。还可以导入任何
导入的文件所依赖的框架
- 将
设置为嵌入式内容控制系统Swift code
Yes
- 将
设置为Install Objective-C Compatibility Header
Yes
- 从
Objective-C生成的接口头名称
中获取文件名。这将类似于
ProjectName Swift.h
@objc
,如下所示:
@objc class ViewController1:UIViewController{…}
ViewController2.m
或.h
中,#import“ProjectName Swift.h
。这可能会自动完成,也可能不会自动完成,所以请键入它ViewController1
是ViewController2
的父视图控制器。现在可以按如下方式传回字符串:
NSString *input = // get the input
ViewConrtoller1 *viewContr1 = (ViewConrtoller1 *)self.parentViewController;
viewContr1.stringInput = input;
或者从ViewController1
转到ViewController2
:
// in prepare for segue
let someString = // whatever you want to pass
let viewContr2 = segue.destinationViewController as! ViewController2
viewController2.someString = someString
您需要一个桥接标头,以便objective-c视图可以引用swift视图。然后您可以使用常规方法(通知、对视图的引用等)传递字符串。@keithbhunter xcode为我制作了标题。我在iOS n00b中。你能给我介绍一下更多的细节吗?你需要一个桥接标题,以便objective-c视图可以引用swift视图。然后您可以使用常规方法(通知、对视图的引用等)传递字符串。@keithbhunter xcode为我制作了标题。我在iOS n00b中。请你再给我讲一点细节好吗?看起来不错。但是,如何使用委派来实现这一点?在
ViewController2
中声明委派协议,并在ViewController2
上创建符合协议的delegate
属性。然后,当您要通知代理任何更改时,执行正常的[self.delegate notifyOfInput:input]
。在Swift和Objective-C之间跳跃不是什么大问题;语法改变了,但是概念是相似的。看起来不错。但是,如何使用委派来实现这一点?在ViewController2
中声明委派协议,并在ViewController2
上创建符合协议的delegate
属性。然后,当您要通知代理任何更改时,执行正常的[self.delegate notifyOfInput:input]
。在Swift和Objective-C之间跳跃不是什么大问题;语法发生了变化,但概念是相似的。