Ios 如何在Objective c xib类中导航viewcontroller(以swift制作)
我使用JSQMessagesViewController库进行聊天。聊天室可能包含URL。如果用户单击url,则该url将在safari中打开 我想在我自己的视图控制器中打开url,该控制器具有webview。但我不知道如何在swift制造的objective c中导航viewcontrollerIos 如何在Objective c xib类中导航viewcontroller(以swift制作),ios,objective-c,swift,swift3,jsqmessagesviewcontroller,Ios,Objective C,Swift,Swift3,Jsqmessagesviewcontroller,我使用JSQMessagesViewController库进行聊天。聊天室可能包含URL。如果用户单击url,则该url将在safari中打开 我想在我自己的视图控制器中打开url,该控制器具有webview。但我不知道如何在swift制造的objective c中导航viewcontroller - (BOOL)textView:(UITextView *)textView shouldInteractWithURL:(NSURL *)URL inRange:(NSRange
- (BOOL)textView:(UITextView *)textView
shouldInteractWithURL:(NSURL *)URL
inRange:(NSRange)characterRange
interaction:(UITextItemInteraction)interaction
{
// Navigate to next VC
return NO;
}
先谢谢你
但我不知道如何在objective c中导航viewcontroller
这是用斯威夫特制造的
使用桥接标题
使您的swift viewcontroller在objective-c代码中可见,然后您可以使用普通程序推送viewcontroller
MySwiftVC *vc = [MySwiftVC init....];
vc.someProperty = Blah blah...;
[self.navigationController pushViewController:vc animated:true];
用于框架(如Cocoapods)
对于项目(例如,手动拖动)
如果你想访问你的Objective-C类,你需要一个桥接头,在那里你必须导入你的Objective-C头文件 如果您想访问Objective-C中的Swift类,您必须导入Swift.h,它是由Xcode Memory自动生成的头文件。swift.h文件的全名为(yourprojectname swift.h),例如
示例swift.h
#import "yourprojectname-Swift.h"
现在,您可以在objective-C中访问ViewController
// Name of your Swift View Controller
YourSwiftViewController *yourSwiftVC = [[YourSwiftViewController alloc] init];
[self.navigationController pushViewController:yourSwiftVC animated:YES];
现在,您可以像使用objective-C一样使用SwiftViewController
// Name of your Swift View Controller
YourSwiftViewController *yourSwiftVC = [[YourSwiftViewController alloc] init];
[self.navigationController pushViewController:yourSwiftVC animated:YES];
你需要在Swift和objective-c之间架起一座桥梁
@objc类Abc{}
希望这对您有所帮助。假设您的swift ViewController有一个URL变量,如:
var url: URL!
并使用url加载请求
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
webView.loadRequest(URLRequest(url: url))
}
在目标C类中包括Swift类参考,如下所示
#import "<productName>-Swift.h"
我正在使用JSQMessagesLibrary,我想在library中导航,但我怎么做呢?你需要对它进行子类化,覆盖在Safari中打开url的函数,并使用自定义控件,比如
CustomJSQMessagesLibrary
,而不是JSQMessagesLibrary
无处不在。我想在第三方库中这样做,我已经为此安装了POD。在这种情况下,第三方库必须有一个功能,您可以覆盖该功能,否则它可能会发布通知或某种阻止。或者它自己直接打开url而不通知您吗?当我单击url时,它会在safari中自动打开url。我想您必须查看其中文档[JSQMessageCollectionViewCellDelegate协议参考]()我不知道如何保存URL,在JSQMessages文档中也没有找到任何可以打开任何视图的内容。别忘了他们也有tableViewCells的委托,你必须深入挖掘这些委托
#import "<productName>-Swift.h"
SwiftWebViewController *vc = [[SwiftWebViewController alloc] init];
vc.url = URL;
[self presentViewController:vc animated:YES completion:nil];
return NO;