gpt4 book ai didi

ios - 在 iOS 9 上从 TableView 打开 safari View Controller 并在 iOS 8 或 7 上在 safari 中打开

转载 作者:可可西里 更新时间:2023-11-01 04:08:41 25 4
gpt4 key购买 nike

您好,如果用户使用的是 iOS 9 或更高版本,我想从 Safari View Controller 中的表格 View 单元格打开我的网站。如果用户使用的是 iOS 7 或 8,网站应该会在标准的 Safari 应用程序中打开。

这是我目前使用的打开 safari 的代码。

    case 3: { // Follow us section
switch (indexPath.row) {
case 0: { //Website
NSURL *url = [NSURL URLWithString:@"http://www.scanmarksapp.com"];
if (![[UIApplication sharedApplication] openURL:url]) {
NSLog(@"%@%@",@"Failed to open url:",[url description]);
}
}
break;

default:
break;
}

}
break;

我相信这段代码应该打开我的网站的 safari View Controller 。但我不确定如何组合两组代码。

- (void)openLink:(NSString *)url {

NSURL *URL = [NSURL URLWithString:[NSString stringWithFormat:@"http://www.scanmarksapp.com", url]];
if (URL) {
SFSafariViewController *sfvc = [[SFSafariViewController alloc] initWithURL:URL];
sfvc.delegate = self;
[self presentViewController:sfvc animated:YES completion:nil];
}

#pragma Safari View Controller Delegate

- (void)safariViewControllerDidFinish:(nonnull SFSafariViewController *)controller {
[controller dismissViewControllerAnimated:YES completion:nil];
}

我明白这是用来判断它是什么 iOS 版本的代码

if ([[[UIDevice currentDevice] systemVersion] floatValue] < 9.0) {

我听从了你的建议

- (void)openLink:(NSString *)url {

NSURL *URL = [NSURL URLWithString:[NSString stringWithFormat:@"http://www.scanmarksapp.com", url]];
if (URL) {
SFSafariViewController *sfvc = [[SFSafariViewController alloc] initWithURL:URL];
sfvc.delegate = self;
[self presentViewController:sfvc animated:YES completion:nil];
} else {
// will have a nice alert displaying soon.
}

if ([SFSafariViewController class] != nil) {
// Use SFSafariViewController
} else {
NSURL *url = [NSURL URLWithString:@"http://www.scanmarksapp.com"];
if (![[UIApplication sharedApplication] openURL:url]) {
NSLog(@"%@%@",@"Failed to open url:",[url description]);
}
}

然后在我的 TableView 单元格 didSelectRowAtIndexPath 下添加这段代码

        case 3: { // Follow us section
switch (indexPath.row) {
case 0: { //Website
NSURL *URL = [NSURL URLWithString:[NSString stringWithFormat:@"http://www.scanmarksapp.com", url]];
if (URL) {
SFSafariViewController *sfvc = [[SFSafariViewController alloc] initWithURL:URL];
sfvc.delegate = self;
[self presentViewController:sfvc animated:YES completion:nil];
} else {
// will have a nice alert displaying soon.
}

if ([SFSafariViewController class] != nil) {
// Use SFSafariViewController
} else {
NSURL *url = [NSURL URLWithString:@"http://www.scanmarksapp.com"];
if (![[UIApplication sharedApplication] openURL:url]) {
NSLog(@"%@%@",@"Failed to open url:",[url description]);
}

}
}
break;

default:
break;
}

}
break;

我在这行代码中收到错误“使用未声明的标识符 url”

NSURL *URL = [NSURL URLWithString:[NSString stringWithFormat:@"http://www.scanmarksapp.com", url]];

删除 NSStringWithFormat 末尾的 url 使 Safari View Controller 工作。但是在低于 9.0 的 iOS 上,例如8.4 应用崩溃。

最佳答案

标准和推荐的方法是检查功能,而不是操作系统版本。在这种情况下,您可以检查 SFSafariViewController 类是否存在。

if ([SFSafariViewController class] != nil) {
// Use SFSafariViewController
} else {
// Open in Mobile Safari
}

编辑

您对 openLink: 的实现是错误的。

- (void)openLink:(NSString *)url {
NSURL *URL = [NSURL URLWithString:url];

if (URL) {
if ([SFSafariViewController class] != nil) {
SFSafariViewController *sfvc = [[SFSafariViewController alloc] initWithURL:URL];
sfvc.delegate = self;
[self presentViewController:sfvc animated:YES completion:nil];
} else {
if (![[UIApplication sharedApplication] openURL:url]) {
NSLog(@"%@%@",@"Failed to open url:",[url description]);
}
}
} else {
// will have a nice alert displaying soon.
}
}

关于ios - 在 iOS 9 上从 TableView 打开 safari View Controller 并在 iOS 8 或 7 上在 safari 中打开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33928119/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com