如果从 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