如果从 tableView:didSelectRowAtIndexPath 调用 UIWebView 不调用 loadRequest:

Posted

技术标签:

【中文标题】如果从 tableView:didSelectRowAtIndexPath 调用 UIWebView 不调用 loadRequest:【英文标题】:UIWebView not calling loadRequest if called from tableView:didSelectRowAtIndexPath: 【发布时间】:2012-07-22 08:30:35 【问题描述】:

我知道,这个问题已经问过很多次了,但没有帮助我。所以我想在 UITableView 中的一行被触摸时触发 loadRequest。但由于某种原因,它不起作用。当 [webView loadRequest:request];被调用,没有任何反应。这是我的代码:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
NSString *bookmarkString = [NSString stringWithFormat:@"%@", [bookmarks objectAtIndex:indexPath.row]];
NSURL *url = [NSURL URLWithString:bookmarkString];
NSURLRequest *request1 = [NSURLRequest requestWithURL:url];
[tableView deselectRowAtIndexPath:indexPath animated:YES];
[self dismissModalViewControllerAnimated:YES];
[myWebView1 loadRequest:request1];
urlField1.text = bookmarkString;

我已经尝试了此代码的许多不同变体,但没有任何效果。使用断点进行调试后,一切都会被调用,但 Web 视图上实际上什么都没有发生。关闭模式视图控制器有效,但不是 loadRequest。有人可以帮忙吗?

编辑:我使用故事板

【问题讨论】:

你确定myWebView1 不为零吗?例如,您可能忘记在 IB 中连接插座。 如果我从其他地方(例如 UITextField)执行加载请求,一切正常。 【参考方案1】:

你应该尝试分配 UIWebView 然后进行调用,即使你是从你的 xib 连接的

    - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
if(!myWebView1)

    myWebView1 = [UIWebView alloc]init];

        NSString *bookmarkString = [NSString stringWithFormat:@"%@", [bookmarks objectAtIndex:indexPath.row]];
        NSURL *url = [NSURL URLWithString:bookmarkString];
        NSURLRequest *request1 = [NSURLRequest requestWithURL:url];
        [tableView deselectRowAtIndexPath:indexPath animated:YES];
        [self dismissModalViewControllerAnimated:YES];
        [myWebView1 loadRequest:request1];
        urlField1.text = bookmarkString;
    

【讨论】:

没有效果...这很奇怪。它在其他任何地方都有效,但在这里却不行。我想我已经分配了所有代表等。是否还有一些我可能忘记/不知道的事情? 我想只是为了测试一下自己,打开一个只有 uiwebview 的新项目,看看上面的代码是否有效。 我可以让它工作,它在 viewDidLoad 等上被调用或在 UITextField 上结束编辑。如果这有帮助,我的 Storyboard 文件中的两个“实际”视图控制器上有相同的视图控制器 (GBViewController)。在操作中,我加载另一个 GBViewController 视图作为表格视图控制器

以上是关于如果从 tableView:didSelectRowAtIndexPath 调用 UIWebView 不调用 loadRequest:的主要内容,如果未能解决你的问题,请参考以下文章

如果从 Fragment 调用 DialogFragment 将引发 ClassCastException

如果从应用商店销售中删除,也从设备中删除 ios 应用

如果它是私有的,是不是可以从 main 调用方法?如果没有,怎么可能?

如果从设置中关闭位置,则获取位置

从 app.config 加载配置(如果可用)

如果连接存在,则从连接表返回值