Merhaba Kullanıcı, iOS 9 veya üzeriyse, safari görünümü denetleyicisindeki web sitemi tablo görünümü hücremden açmak istiyorum. Kullanıcı iOS 7 veya 8'de ise, web sitesi standart safari uygulamasında açılmalıdır.iOS 9'daki tablo görünümünden safari görünümü denetleyicisini açın ve iOS 8 veya 7'de safari'de açın
Şu anda kullandığım ve şu anda safari açan kod.
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;
Bu kodun web sitemde safari görünümü denetleyicisini açması gerektiğine inanıyorum. Ancak, her iki kod kümesinin nasıl birleştirileceğinden emin değilim. Anlıyorum
- (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];
}
bu Sonra tablo görünümü hücresi didSelectRowAtIndexPath altında bu kodu eklenmiş
- (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]);
}
}
tavsiyeniz ben takip ettim
if ([[[UIDevice currentDevice] systemVersion] floatValue] < 9.0) {
ne olduğunu iOS sürümünü belirlemek için kullanılan koddur
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;
Ben NSStringWithFormat sonunda url Çıkarma kodu
NSURL *URL = [NSURL URLWithString:[NSString stringWithFormat:@"http://www.scanmarksapp.com", url]];
bu hat üzerinde hata "bildirilmemiş tanımlayıcı url Kullanımı" alıyorum Safari görünümü denetleyicisi çalışma yapar. Ancak iOS’un 9’un altında, ör. 8.4 uygulama çöküyor.
Ne yaptığımı ve gösterdiği hatayı gösteren soruyu güncelledim. – user5394344
"SFSafariViewController" işlevini güvenle kullanmak için yönteminizi kullanmıyorsunuz. Sadece bu değil, 'openLink:' yönteminiz yanlış. Sınıf kullanılabilir olup olmadığını kontrol etmeden 'SFSafariViewController' kullanmayı deneyin. – Avi
@Avi iOS 9 ve üstü için bir uygulama yaparsanız, Api uygunluğunu doğru kontrol etmenize gerek yok mu? – Supertecnoboff