我尝试使用WKWebView
方法在另一个视图上显示presentViewController
,但只显示白屏。
我在ViewController.m
中实现了WKWebView,如下所示:
- (void)viewDidLoad {
[super viewDidLoad];
WKWebViewConfiguration *configuration = [[WKWebViewConfiguration alloc] init];
_webView = [[WKWebView alloc] initWithFrame:self.view.frame
configuration:configuration];
_webView.navigationDelegate = self;
[_webView loadRequest:[NSURLRequest requestWithURL:url]];
[self.view addSubview:_webView];
}
然后在另一个类中我有一个带有以下代码的方法:
AppDelegate *delegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
ViewController *webView1 =[[ViewController alloc] init];
[delegate.window.rootViewController presentViewController: webView1
animated:YES completion:nil];
这最后一个代码"呈现"我的rootViewController
顶部有一个白色屏幕。我不知道为什么我的webView是白屏。
答案 0 :(得分:0)
您要加载哪个URL?
可能是您需要向plist文件添加权限才能加载不安全的URL。
将此添加到您的plist中,看看是否可行。
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
有关更多信息,请参见此处: https://ooiks.com/2017/10/15/ios-wkwebview-return-a-blank-screen-white-screen/
还要确保您尝试的URL使用HTTP或HTTPS。确保UIApplication.shared.canOpenURL(url : URL(string: yourURLString))
返回URL的true
。
答案 1 :(得分:-2)
所以,我发现为什么它只是显示一个白色的屏幕。事实证明,你必须用WKWebView
包裹UINavigationController
。
添加:
UINavigationController *controller = [[UINavigationController alloc] initWithRootViewController: _webView];
到我的自定义类中的自定义方法,然后显示我刚创建的controller
而不是_webView
:
[delegate.window.rootViewController presentViewController: controller animated:YES completion:nil];
现在工作正常。