0

如何通过按下按钮更改 WebView 中的文本?

我有一个用 HTML 填充的 Web 视图。

if ([buttonState isEqualToString:@"YES"]) {
    UIFont *webFont = [UIFont fontWithName:@"Helvetica" size:12];
    NSString *mainTextString;
    mainTextString = @"<p><b>General:</b>THIS IS TEXT1</p>";
    mainTextString = [NSString stringWithFormat:@"<span style=\"font-family: %@; font-size: %i\">%@</span>", webFont.fontName, (int) webFont.pointSize, mainTextString];
    [mainText loadHTMLString:mainTextString baseURL:nil];
}
else if ([buttonState isEqualToString:@"NO"]) {
    UIFont *webFont = [UIFont fontWithName:@"Helvetica" size:12];
    NSString *mainTextString;
    mainTextString = @"<p><b>General:</b>THIS IS TEXT2</p>";
    mainTextString = [NSString stringWithFormat:@"<span style=\"font-family: %@; font-size: %i\">%@</span>", webFont.fontName, (int) webFont.pointSize, mainTextString];
    [mainText loadHTMLString:mainTextString baseURL:nil];
}

我还有一个 UIButton,我想用它来更改 Webview 中的文本。

- (IBAction)textChangeButton:(id)sender {
    if ([buttonState isEqualToString: @"NO"]) {
        buttonState = @"YES";
    }
    else if ([buttonState isEqualToString:@"YES"]) {
        buttonState = @"NO";
    }
    [mainText reload];
}

不幸的是,当我按下按钮时,第二个文本没有出现!

作为编程新手,我不知道问题是什么。我已经尝试在按下按钮时重新加载 webview - 仍然没有运气。有人能指出我正确的方向吗?

任何帮助深表感谢!

4

1 回答 1

1

调用[mainText reload]只会加载一个空页面。您需要再次执行第一个代码,以便 webview 加载正确的内容。

尝试将代码移动到一个新方法并调用它viewDidLoadtextChangeButton:

- (void)reloadWebPage {
    if ([buttonState isEqualToString:@"YES"]) {
        mainTextString = (...);
        [mainText loadHTMLString:mainTextString baseURL:nil];
    }
    else if ([buttonState isEqualToString:@"NO"]) {
        mainTextString = (...);
        [mainText loadHTMLString:mainTextString baseURL:nil];
    }
}

- (void)viewDidLoad {
    [self reloadWebPage];
}

- (IBAction)textChangeButton:(id)sender {
    if ([buttonState isEqualToString: @"NO"]) {
        buttonState = @"YES";
    }
    else if ([buttonState isEqualToString:@"YES"]) {
        buttonState = @"NO";
    }

    [self reloadWebPage];
}
于 2013-10-13T21:30:09.833 回答