只需按一下按钮即可更改UIWebView中的文本。 (简单?)

时间:2013-10-13 19:38:04

标签: ios uiwebview uibutton

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

我有一个Web视图,填充了HTML。

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 - 仍然没有运气。有人能指出我正确的方向吗?

非常感谢任何帮助!

1 个答案:

答案 0 :(得分: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];
}