在设置页面上,我想要包含三个链接
我的应用支持网站
YouTube应用教程
我的主要网站(即:链接到'Created by Dale Dietrich'标签 . )
我搜索了这个网站和网络以及我的文档,我发现没有什么是显而易见的 .
NOTE: 我没有看到许多应用程序在其“设置”页面中执行相同的操作,因此必须这样做 .
继承人我做了什么:
- (IBAction)openDaleDietrichDotCom:(id)sender;
我在“设置”页面上添加了一个UIButton,其中包含我要链接到的文本 .
我将按钮连接到文件所有者中的IBAction .
然后执行以下操作:
Obj 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) }
Swift Syntax:
UIApplication.sharedApplication().openURL(NSURL(string:"http://www.reddit.com/")!)
New Swift Syntax for iOS 9.3 and earlier
从某些新版本的Swift(可能是swift 2?)开始,UIApplication.sharedApplication()现在是UIApplication.shared(更好地利用我猜的计算属性) . 此外,URL不再可以隐式转换为NSURL,必须使用as显式转换!
UIApplication.sharedApplication.openURL(NSURL(string:"http://www.reddit.com/") as! URL)
New Swift Syntax as of iOS 10.0
openURL方法已被弃用,并替换为更通用的方法,该方法从iOS 10.0开始采用选项对象和异步完成处理程序
UIApplication.shared.open(NSURL(string:"http://www.reddit.com/")! as URL)
这里需要检查一下,打开的URL是否可以通过设备或模拟器打开 . 因为有些时候(在模拟器中占多数)我发现它会导致崩溃 .
Objective-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) }
看看UIApplication上的-openURL:方法 . 它应该允许您将NSURL实例传递给系统,这将确定打开它的应用程序并启动该应用程序 . (请记住,您可能首先要检查 -canOpenURL: ,以防系统上当前安装的应用程序无法处理该URL - 尽管这对于普通的 http:// 链接可能不是问题 . )
-canOpenURL:
http://
并且,如果您不确定提供的URL text 是否具有方案:
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];
未弃用的Objective-C版本将是:
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"http://apple.com"] options:@{} completionHandler:nil];
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) } }
这也支持运行旧版iOS的设备
Swift 3 带有完成按钮的解决方案
别忘了 import SafariServices
import SafariServices
if let url = URL(string: "http://www.yoururl.com/") { let vc = SFSafariViewController(url: url, entersReaderIfAvailable: true) present(vc, animated: true) }
In SWIFT 3.0
if let url = URL(string: "https://www.google.com") { UIApplication.shared.open(url, options: [:]) }
openURL(:) 在iOS 10.0中已弃用,而应在UIApplication上使用以下实例方法: open( :options:completionHandler:)
Example using 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
试试这个:
NSString *URL = @"xyz.com"; if([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:URL]]) { [[UIApplication sharedApplication] openURL:[NSURL URLWithString:URL]]; }
在Swift 1.2中,试试这个:
let pth = "http://www.google.com" if let url = NSURL(string: pth){ UIApplication.sharedApplication().openURL(url)
Swift 4解决方案:
UIApplication.shared.open(NSURL(string:"http://yo.lo")! as URL, options: [String : Any](), completionHandler: nil)
13 回答
继承人我做了什么:
我在“设置”页面上添加了一个UIButton,其中包含我要链接到的文本 .
我将按钮连接到文件所有者中的IBAction .
然后执行以下操作:
Obj C
Swift
(在viewController中的IBAction,而不是头文件)
Swift Syntax:
New Swift Syntax for iOS 9.3 and earlier
从某些新版本的Swift(可能是swift 2?)开始,UIApplication.sharedApplication()现在是UIApplication.shared(更好地利用我猜的计算属性) . 此外,URL不再可以隐式转换为NSURL,必须使用as显式转换!
New Swift Syntax as of iOS 10.0
openURL方法已被弃用,并替换为更通用的方法,该方法从iOS 10.0开始采用选项对象和异步完成处理程序
这里需要检查一下,打开的URL是否可以通过设备或模拟器打开 . 因为有些时候(在模拟器中占多数)我发现它会导致崩溃 .
Objective-C
Swift 2.0
看看UIApplication上的-openURL:方法 . 它应该允许您将NSURL实例传递给系统,这将确定打开它的应用程序并启动该应用程序 . (请记住,您可能首先要检查
-canOpenURL:
,以防系统上当前安装的应用程序无法处理该URL - 尽管这对于普通的http://
链接可能不是问题 . )并且,如果您不确定提供的URL
text
是否具有方案:未弃用的Objective-C版本将是:
Swift 3.0
这也支持运行旧版iOS的设备
Swift 3 带有完成按钮的解决方案
别忘了
import SafariServices
In SWIFT 3.0
openURL(:) 在iOS 10.0中已弃用,而应在UIApplication上使用以下实例方法: open( :options:completionHandler:)
Example using Swift
这将在Safari中打开“https://apple.com” .
https://developer.apple.com/reference/uikit/uiapplication/1648685-open
试试这个:
在Swift 1.2中,试试这个:
Swift 4解决方案: