【问题标题】:Unable to get html file to display in UIWebView无法获取要在 UIWebView 中显示的 html 文件
【发布时间】:2012-03-10 20:34:15
【问题描述】:

我试图效仿这个例子:http://howtomakeiphoneapps.com/uiwebview-tutorial/239/

我已将 UIWebView 添加到我的视图中(使用 Storyboard)...我将 IBOutlet 添加到我的 .h 控制器文件中。 (参见图片:http://imgur.com/GfUmC)。我向视图控制器添加了一个委托,如下所示:

#import <UIKit/UIKit.h>

@interface slWebViewController : UIViewController <UIWebViewDelegate> {
    IBOutlet UIWebView *slWebView;    
}

@end

由于我使用的是 XCode 4,我不知道如何将 UIWebView 的委托设置为文件所有者,这就是为什么我认为这就是我得到黑屏的原因。我错过了一些东西,但我不知道是什么。在这一点上,我真的非常感谢我能得到解决这个问题的任何帮助......

【问题讨论】:

    标签: xcode4 uiwebview


    【解决方案1】:

    在您的 Storyboard 中,右键单击(或按住 ctrl 单击)并从您的 UIWebView 拖动到左侧的 File's Owner,然后选择“委托”。

    或者,选择 webView(如您的图像中所示)。注意顶部的出口,“代表”。从那里拖到文件的所有者。

    或者你可以编码。在 viewDidLoad 中,输入“self.sIWebView.delegate = self;”

    所有这一切都假设您拥有正确的 URL 请求。如果你不这样做,这里有一个例子:

    NSURL * url = [NSURL URLWithString:@"http://google.com"];
        NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL: url  
                                                               cachePolicy: NSURLRequestReloadIgnoringCacheData    
                                                           timeoutInterval: 10];
        [sIWebView loadRequest:request];
    

    编辑:如果您以模态方式呈现 webView,请将此代码添加到与您的 webview 连接的视图控制器中:-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{ if ([segue.identifier isEqualToString:@"SegueIdentifier"]) { WebViewController *webView = segue.destinationViewController; webView.delegate = self; } } 您需要向您的 segue 添加一个标识符。只需单击 segue 本身,转到右侧第三个选项卡,然后输入标识符。

    更新:我已将问题隔离到 webViewConroller.m 文件。一切都已正确连接。如果我将 loadRequest 代码放在 viewDidLoad 的 viewController 中,我会看到 Google。如果我将 loadRequest 代码放在“webViewController”中,并将 ViewContoller 标记为 webViewController 的自定义类,则会出现黑屏。我想知道是否有更好的方法让 UIWebView 显示内容?我真的不需要 webView 的控制器,就在点击该单元格的 segue 时,显示 UIWebView 的内容......不确定我可以用 XCode 做到这一点......

    【讨论】:

    • 什么都没改变!我已经上传了我的代码和我所看到的屏幕截图。希望你能看到我做错了什么。 :D 代码在这里(有 3 个视图)imgur.com/4GnfE,k667K,sQGVp
    • 复制这个并粘贴到你的 -viewDidLoad 中:NSURL * url = [NSURL URLWithString:@"http://google.com"]; NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL: url cachePolicy: NSURLRequestReloadIgnoringCacheData timeoutInterval: 10]; [slWebView loadRequest:request]; 然后加载它,看看会发生什么。您没有任何代码告诉 webView 要显示什么。
    • 什么都没有发生……它仍然是黑色的。仅供参考,在我的应用程序中,有两个 segues 被激活,具体取决于所选的...它们显示不同的 html,一个来自文件,另一个程序生成 html。我想知道是否应该删除 UIViewController 中的 UIWebView 并从头开始?
    • 我想我明白了...给我几分钟时间在我的应用上试用它(我制作了一个测试应用,它成功了!)brb
    • 它是什么类型的segue?将此代码添加到与您的 webview 连接的视图控制器中:-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{ if ([segue.identifier isEqualToString:@"SegueIdentifier"]) { WebViewController *webView = segue.destinationViewController; webView.delegate = self; } } 您需要向您的 segue 添加一个标识符。只需单击 segue 本身,转到右侧的第三个选项卡,然后输入标识符。这应该可以解决您的问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-10
    • 2011-01-17
    • 2011-09-03
    相关资源
    最近更新 更多