Ciao Vorrei aprire il mio sito web dalla mia cella di visualizzazione tabella nel controller di visualizzazione safari se l'utente è su iOS 9 o successivo. Se l'utente è su iOS 7 o 8, il sito web dovrebbe aprirsi nell'app safari standard.Aprire il controller di visualizzazione safari dalla vista tabella su iOS 9 e aprire in Safari su iOS 8 o 7
Questo è il codice che attualmente uso che apre il 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;
Credo che questo codice dovrebbe aprire il controller di visualizzazione safari con il mio sito web. Ma non sono sicuro di come combinare entrambi i set di codice.
- (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];
}
Capisco che questo è il codice utilizzato per determinare quale versione di iOS è
if ([[[UIDevice currentDevice] systemVersion] floatValue] < 9.0) {
Ho seguito il tuo consiglio
- (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]);
}
}
Poi ha aggiunto questo codice sotto la mia tavola didSelectRowAtIndexPath vista delle cellule
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;
sto ottenendo l'errore "L'utilizzo di identificatore non dichiarato url" in questa riga di codice
NSURL *URL = [NSURL URLWithString:[NSString stringWithFormat:@"http://www.scanmarksapp.com", url]];
Rimozione url alla fine del NSStringWithFormat rende il lavoro di vista del regolatore Safari. Tuttavia su iOS inferiore a 9.0, ad es. 8.4 l'app si blocca.
Ho aggiornato la domanda mostrando ciò che ho fatto e l'errore che sta mostrando. – user5394344
Non stai usando il tuo metodo per usare in sicurezza 'SFSafariViewController'. Non solo, il metodo 'openLink:' è sbagliato. Si tenta di utilizzare 'SFSafariViewController' senza verificare se la classe è disponibile. – Avi
@Avi Se crei un'app per iOS 9 e versioni successive, NON è necessario verificare la disponibilità di Api? – Supertecnoboff