我有一个嵌入ViewController
的测试NavigationController
。在测试ViewController
中,我有一个WebView
按钮。当我点击button
时,它会导航到SafariViewController
并加载给定的网址。在WebView
当我点击“完成”按钮时,它正在调用名为safariViewControllerDidFinish
的委托方法。但SafariViewController
并未被驳回。
这是我的代码。
- (IBAction)bannerWebviewAction:(id)sender {
NSURL *urls = [NSURL URLWithString:@"http://www.google.com"];
SFSafariViewController safariVC = [[SFSafariViewController alloc] initWithURL:urls];
[self showViewController:safariVC sender:nil];
safariVC.delegate = self;
}
#pragma SFSafariViewControllerDelegate
-(void)safariViewControllerDidFinish:(SFSafariViewController *)controller {
// Done button pressed
[controller dismissViewControllerAnimated:YES completion:nil];
}
完成button
正在调用,查看并未解雇。我检查了self
和controller
的日志,两者都是正确的。
答案 0 :(得分:9)
你不应该说
[self showViewController:safariVC sender:nil];
你应该说
[self presentViewController:safariVC animated:YES completion:nil];
SFSafariViewControllers是以模态方式呈现的,并且在按下完成后会自动解除。