Dal*_*ich 210 url mobile-safari ios
在设置页面上,我想要包含三个链接
我搜索了这个网站和网络以及我的文档,我发现没有什么是显而易见的.
注意:我不想在我的应用程序中打开网页,我只想将链接发送到Safari并在那里打开该链接.我已经看到许多应用程序在其"设置"页面中执行相同操作,因此必须可行.
Dal*_*ich 379
继承人我做了什么:
我在标题.h文件中创建了一个IBAction,如下所示:
- (IBAction)openDaleDietrichDotCom:(id)sender;
Run Code Online (Sandbox Code Playgroud)我在"设置"页面上添加了一个UIButton,其中包含我要链接到的文本.
我正确地将按钮连接到文件所有者的IBAction.
然后执行以下操作:
对象C.
- (IBAction)openDaleDietrichDotCom:(id)sender {
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"http://www.daledietrich.com"]];
}
Run Code Online (Sandbox Code Playgroud)
迅速
(在viewController中的IBAction,而不是头文件)
if let link = URL(string: "https://yoursite.com") {
UIApplication.shared.open(link)
}
Run Code Online (Sandbox Code Playgroud)
Dus*_*ams 164
Swift语法:
UIApplication.sharedApplication().openURL(NSURL(string:"http://www.reddit.com/")!)
Run Code Online (Sandbox Code Playgroud)
适用于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)
Run Code Online (Sandbox Code Playgroud)
从iOS 10.0开始的新Swift语法
openURL方法已被弃用,并替换为更通用的方法,该方法从iOS 10.0开始采用选项对象和异步完成处理程序
UIApplication.shared.open(NSURL(string:"http://www.reddit.com/")! as URL)
Run Code Online (Sandbox Code Playgroud)
Che*_*ati 52
这里需要检查一下,打开的URL是否可以通过设备或模拟器打开.因为有些时候(在模拟器中占多数)我发现它会导致崩溃.
Objective-C的
NSURL *url = [NSURL URLWithString:@"some url"];
if ([[UIApplication sharedApplication] canOpenURL:url]) {
[[UIApplication sharedApplication] openURL:url];
}
Run Code Online (Sandbox Code Playgroud)
Swift 2.0
let url : NSURL = NSURL(string: "some url")!
if UIApplication.sharedApplication().canOpenURL(url) {
UIApplication.sharedApplication().openURL(url)
}
Run Code Online (Sandbox Code Playgroud)
mea*_*ers 17
并且,如果您不确定提供的URL 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];
Run Code Online (Sandbox Code Playgroud)
Ant*_*tzi 13
未弃用的Objective-C版本将是:
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"http://apple.com"] options:@{} completionHandler:nil];
Run Code Online (Sandbox Code Playgroud)
Gre*_*g T 10
Swift 3.0
if let url = URL(string: "https://www.reddit.com") {
if #available(iOS 10.0, *) {
UIApplication.shared.open(url, options: [:])
} else {
UIApplication.shared.openURL(url)
}
}
Run Code Online (Sandbox Code Playgroud)
这也支持运行旧版iOS的设备
带有完成按钮的Swift 3解决方案
别忘了 import SafariServices
if let url = URL(string: "http://www.yoururl.com/") {
let vc = SFSafariViewController(url: url, entersReaderIfAvailable: true)
present(vc, animated: true)
}
Run Code Online (Sandbox Code Playgroud)
由于自iOS 10.0起不赞成使用此答案,因此更好的答案是:
if #available(iOS 10.0, *) {
UIApplication.shared.open(url, options: [:], completionHandler: nil)
}else{
UIApplication.shared.openURL(url)
}
Run Code Online (Sandbox Code Playgroud)
是Objective-c
[[UIApplication sharedApplication] openURL:@"url string" options:@{} completionHandler:^(BOOL success) {
if (success) {
NSLog(@"Opened url");
}
}];
Run Code Online (Sandbox Code Playgroud)