在设置页面上,我想要包含三个指向
的链接我搜索了这个网站以及网络和我的文档,但我发现没有什么是显而易见的。
注意:我不想在我的应用中打开网页,我只想将链接发送到Safari并在那里打开该链接。我已经看到许多应用在其“设置”页面中执行相同操作,因此必须可以。
答案 0 :(得分:373)
继承人的所作所为:
我在标题.h文件中创建了一个IBAction,如下所示:
- (IBAction)openDaleDietrichDotCom:(id)sender;
我在“设置”页面上添加了一个UIButton,其中包含我要链接到的文本。
我正确地将按钮连接到文件所有者的IBAction。
然后实施以下内容:
对象C
- (IBAction)openDaleDietrichDotCom:(id)sender {
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"http://www.daledietrich.com"]];
}
Swift
(viewController中的IBAction,而不是头文件)
if let link = URL(string: "https://yoursite.com") {
UIApplication.shared.open(link)
}
答案 1 :(得分:161)
Swift语法:
UIApplication.sharedApplication().openURL(NSURL(string:"http://www.reddit.com/")!)
iOS 9.3及更早版本的新Swift语法
从某些新版本的Swift(可能是swift 2?)开始,UIApplication.sharedApplication()现在是UIApplication.shared(更好地利用我猜测的计算属性)。此外,URL不再可以隐式转换为NSURL,必须使用as!
显式转换UIApplication.sharedApplication.openURL(NSURL(string:"http://www.reddit.com/") as! URL)
从iOS 10.0开始的新Swift语法
openURL方法已被弃用,取而代之的是一个更通用的方法,它从iOS 10.0开始接受选项对象和异步完成处理程序
UIApplication.shared.open(NSURL(string:"http://www.reddit.com/")! as URL)
答案 2 :(得分:47)
这里需要检查一下,打开的网址是否可以通过设备或模拟器打开。因为有些时候(在模拟器中占多数)我发现它会导致崩溃。
<强>目标C 强>
NSURL *url = [NSURL URLWithString:@"some url"];
if ([[UIApplication sharedApplication] canOpenURL:url]) {
[[UIApplication sharedApplication] openURL:url];
}
Swift 2.0
let url : NSURL = NSURL(string: "some url")!
if UIApplication.sharedApplication().canOpenURL(url) {
UIApplication.sharedApplication().openURL(url)
}
答案 3 :(得分:20)
查看UIApplication上的-openURL:
方法。它应该允许您将NSURL实例传递给系统,这将确定打开它的应用程序并启动该应用程序。 (请记住,您可能首先要检查-canOpenURL:
,以防系统上当前安装的应用无法处理该网址 - 尽管这可能不是普通http://
的问题链接。)
答案 4 :(得分:17)
并且,如果您不确定提供的网址text
是否有方案:
NSString* text = @"www.apple.com";
NSURL* url = [[NSURL alloc] initWithString:text];
if (url.scheme.length == 0)
{
text = [@"http://" stringByAppendingString:text];
url = [[NSURL alloc] initWithString:text];
}
[[UIApplication sharedApplication] openURL:url];
答案 5 :(得分:13)
未弃用的Objective-C版本将是:
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"http://apple.com"] options:@{} completionHandler:nil];
答案 6 :(得分:8)
Swift 3.0
subviews
这也支持运行旧版iOS的设备
答案 7 :(得分:6)
Swift 3 使用完成按钮的解决方案
别忘了import SafariServices
if let url = URL(string: "http://www.yoururl.com/") {
let vc = SFSafariViewController(url: url, entersReaderIfAvailable: true)
present(vc, animated: true)
}
答案 8 :(得分:5)
因为自iOS 10.0起不赞成使用此答案,所以更好的答案是:
if #available(iOS 10.0, *) {
UIApplication.shared.open(url, options: [:], completionHandler: nil)
}else{
UIApplication.shared.openURL(url)
}
y en Objective-c
[[UIApplication sharedApplication] openURL:@"url string" options:@{} completionHandler:^(BOOL success) {
if (success) {
NSLog(@"Opened url");
}
}];
答案 9 :(得分:3)
openURL(:) ,而应在UIApplication上使用以下实例方法:打开( 的:选择:completionHandler:)强>
使用Swift的示例
这将在Safari中打开“https://apple.com”。
if let url = URL(string: "https://apple.com") {
if UIApplication.shared.canOpenURL(url) {
UIApplication.shared.open(url, options: [:], completionHandler: nil)
}
}
https://developer.apple.com/reference/uikit/uiapplication/1648685-open
答案 10 :(得分:2)
在SWIFT 3.0中
if let url = URL(string: "https://www.google.com") {
UIApplication.shared.open(url, options: [:])
}
答案 11 :(得分:2)
快捷键5:
func open(scheme: String) {
if let url = URL(string: scheme) {
if #available(iOS 10, *) {
UIApplication.shared.open(url, options: [:],
completionHandler: {
(success) in
print("Open \(scheme): \(success)")
})
} else {
let success = UIApplication.shared.openURL(url)
print("Open \(scheme): \(success)")
}
}
}
用法:
open(scheme: "http://www.bing.com")
参考:
答案 12 :(得分:1)
试试这个:
NSString *URL = @"xyz.com";
if([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:URL]])
{
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:URL]];
}
答案 13 :(得分:0)
在Swift 1.2中,试试这个:
let pth = "http://www.google.com"
if let url = NSURL(string: pth){
UIApplication.sharedApplication().openURL(url)
答案 14 :(得分:-2)
Swift 4解决方案:
UIApplication.shared.open(NSURL(string:"http://yo.lo")! as URL, options: [String : Any](), completionHandler: nil)