Hallo Ich möchte meine Website von meiner Tabellenansichtszelle im Safari-View-Controller öffnen, wenn der Benutzer auf iOS 9 oder höher ist. Wenn der Benutzer auf iOS 7 oder 8 ist, sollte die Website in der Standard-Safari-App geöffnet werden.Safari-Ansicht-Controller aus der Tabellenansicht auf iOS 9 öffnen und in Safari auf iOS 8 oder 7 öffnen
Dies ist der Code, den ich derzeit verwende, der Safari öffnet.
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;
Ich glaube, dass dieser Code den Safari View Controller mit meiner Website öffnen sollte. Aber ich bin mir nicht sicher, wie ich beide Code-Sets kombiniere.
- (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];
}
Ich verstehe, das ist der Code verwendet, was iOS-Version zu bestimmen, ist es
if ([[[UIDevice currentDevice] systemVersion] floatValue] < 9.0) {
Ich habe Ihren Rat
- (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]);
}
}
Dann folgte diesen Code unter meinem Tisch Sichtzelle DidSelectRowAtIndexPath hinzugefügt
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;
ich die Fehlermeldung „Die Verwendung von nicht deklarierter Bezeichner url“ auf dieser Zeile Code bekommen
NSURL *URL = [NSURL URLWithString:[NSString stringWithFormat:@"http://www.scanmarksapp.com", url]];
URL am Ende des NSStringWithFormat Entfernen macht die Steuerung der Arbeit Safari Ansicht. Jedoch unter iOS unter 9,0 z.B. 8.4 Die App stürzt ab.
Ich habe die Frage aktualisiert, die zeigt, was ich getan habe und den Fehler, den es zeigt. – user5394344
Sie verwenden Ihre Methode nicht zur sicheren Verwendung von 'SFSafariViewController'. Nicht nur das, Ihre 'openLink:' Methode ist falsch. Sie versuchen, 'SFSafariViewController' zu verwenden, ohne zu prüfen, ob die Klasse verfügbar ist. – Avi
@Avi Wenn Sie eine App für iOS 9 und höher erstellen, müssen Sie nicht auf die Verfügbarkeit von Api prüfen? – Supertecnoboff