如何在 Objective c xib 类中导航视图控制器(用 swift 制作)



我正在使用JSQMessagesViewController库进行聊天。聊天可能包含网址。如果用户单击该网址,则该网址将在 safari 中打开。

我想在我自己的具有 Web 视图的视图控制器中打开 url。但是我不知道如何在 swift 中的目标 c 中导航视图控制器。

- (BOOL)textView:(UITextView *)textView
shouldInteractWithURL:(NSURL *)URL
         inRange:(NSRange)characterRange
     interaction:(UITextItemInteraction)interaction
{
   // Navigate to next VC
    return NO;
}

提前谢谢你。

但我不知道如何在目标 c 中导航视图控制器 这是用斯威夫特制造的。

Use bridging header让你的 swift viewcontroller 在 Objective-C 代码中可见,那么你可以使用普通过程推送视图控制器。

MySwiftVC *vc = [MySwiftVC init....];
vc.someProperty = Blah blah...;
[self.navigationController pushViewController:vc animated:true];

你需要 Swift 和 objective-c 之间的桥梁,

  1. 在 swift 类定义中添加@objc,例如:@objc class Abc{}

  2. 构建您的项目,以便 Xcode 可以自动生成桥接文件。

  3. 导入 objective-c 文件中的"YourProject-Swift.h"

现在你可以在 objective-C 中调用 swift 类。希望这对你有帮助。

如果你想访问你的Objective-C

类,你需要一个桥接头,你必须在其中导入你的Objective-C头文件。

如果你想在 Objective-C 中访问 Swift 类,你必须导入 swift.h,这是一个由 Xcode 记住自动生成的头文件。swift.h 文件的完整名称将是 (yourprojectname-Swift.h(,例如 Example-Swift.h

#import "yourprojectname-Swift.h"

现在你可以在你的目标-C中访问你的视图控制器

现在,你可以像使用你的 objective-C 一样使用 swiftViewController

// Name of your Swift View Controller
YourSwiftViewController *yourSwiftVC = [[YourSwiftViewController alloc] init];
[self.navigationController pushViewController:yourSwiftVC animated:YES];

假设你的 swift ViewController 有一个 URL 变量,如下所示:

var url: URL!

并使用网址加载请求。

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)
    webView.loadRequest(URLRequest(url: url))
}

在 Objective-C 类中包含 Swift 类引用,如下所示

#import "<productName>-Swift.h"

在你的上下文中,Objective-C 控制器在处理文本视图时应该与 URL 交互

SwiftWebViewController *vc = [[SwiftWebViewController alloc] init];
vc.url = URL;
[self presentViewController:vc animated:YES completion:nil];
return NO;

for framework (e. Cocoapods(

@import frameworkName

对于项目(例如手动拖动(

#import "projectName-Swift.h"

并使用它

最新更新