Webview内容未更新

时间:2019-04-29 23:06:58

标签: ios webview

正在NSString中加载UIWebView的内容。 然后在另一个视图中编辑nsstring的内容。一旦我退回到该屏幕,NSString中的内容就会更新,但是UIWebView中的内容就不会更新。

- (void)viewWillAppear:(BOOL)animated{
    self.responseMessageWebView = [[UIWebView alloc] initWithFrame:self.middlecontainerScroller.frame];
        [self.middlecontainerScroller addSubview:self.responseMessageWebView];

        self.responseMessageWebView.opaque=NO;
        [self.responseMessageWebView.scrollView setShowsVerticalScrollIndicator:YES];
        self.responseMessageWebView.scrollView.delegate=self;
        self.responseMessageWebView.tintColor = [UIColor blackColor];
        self.responseMessageWebView.delegate = self;
        [self.responseMessageWebView setBackgroundColor:[UIColor clearColor]];
        self.responseMessageWebView.userInteractionEnabled = YES;
        self.responseMessageWebView.scrollView.bounces         = false;
        self.responseMessageWebView.scrollView.scrollEnabled = false;
        [self.responseMessageWebView reload];
    NSString* htmlHead=@"<!DOCTYPE html><html><head><style>\
                * {\
                word-wrap: break-word;\
                }\
                </style>\
                </head>\
                <body>";
                NSString* html=[NSString stringWithFormat:@"%@ Hello world my testing string%@",htmlHead,@"</body></html>"];
                [self.responseMessageWebView loadHTMLString:html baseURL:nil];
}
    - (void)webViewDidFinishLoad:(UIWebView *)aWebView {}

一旦我弹出,字符串值将从Hello world my testing string更新为my testing string

 - (void)viewWillAppear:(BOOL)animated{
        self.responseMessageWebView = [[UIWebView alloc] initWithFrame:self.middlecontainerScroller.frame];
            [self.middlecontainerScroller addSubview:self.responseMessageWebView];

            self.responseMessageWebView.opaque=NO;
            [self.responseMessageWebView.scrollView setShowsVerticalScrollIndicator:YES];
            self.responseMessageWebView.scrollView.delegate=self;
            self.responseMessageWebView.tintColor = [UIColor blackColor];
            self.responseMessageWebView.delegate = self;
            [self.responseMessageWebView setBackgroundColor:[UIColor clearColor]];
            self.responseMessageWebView.userInteractionEnabled = YES;
            self.responseMessageWebView.scrollView.bounces         = false;
            self.responseMessageWebView.scrollView.scrollEnabled = false;
            [self.responseMessageWebView reload];
        NSString* htmlHead=@"<!DOCTYPE html><html><head><style>\
                    * {\
                    word-wrap: break-word;\
                    }\
                    </style>\
                    </head>\
                    <body>";
                    NSString* html=[NSString stringWithFormat:@"%@my testing string%@",htmlHead,@"</body></html>"];
                    [self.responseMessageWebView loadHTMLString:html baseURL:nil];
    }
        - (void)webViewDidFinishLoad:(UIWebView *)aWebView {}

我不能使用WKWebView。有什么方法可以刷新UIWebView吗?

1 个答案:

答案 0 :(得分:1)

让我大吃一惊的是,您正在viewWillAppear:中创建Webview并将其添加到其Superview中,但是可能永远不会清除它,因此如果您发现了一个重复的Webview导航离开该屏幕并返回。

您应该将viewWillAppear:方法中当前使用的所有Webview配置代码移至viewDidLoad之类的位置。这基本上意味着除了设置HTML字符串和最后的loadHTMLString:调用所在的行以外的所有内容。您也不需要reload调用,我认为它没有任何作用。

这可能会解决您的问题,但是如果没有解决,唯一无法说明的其他事情就是实际的htmlHead属性。实际上是在某处更新吗?如果不是,则问题不是Webview,因为您没有更新数据。