我有一个需要打开Web视图的UITableViewController。
在我的职能中,我有:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
LinkViewController *linkViewController = [[LinkViewController alloc] initWithNibName:@"LinkViewController_iPhone" bundle:nil];
[linkViewController.webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.google.com"]]];
[self.navigationController pushViewController:linkViewController animated:YES];
}
我已经连接了所有插座,并且没有收到任何警告,但是我看不到该页面上拉。
但是,如果我进入实际的LinkViewController文件并执行以下操作:
- (void)viewDidLoad
{
[super viewDidLoad];
NSString *urlAddress = @"http://www.google.com";
//Create a URL object.
NSURL *url = [NSURL URLWithString:urlAddress];
//URL Requst Object
NSURLRequest *requestObj = [NSURLRequest requestWithURL:url];
//Load the request in the UIWebView.
[self.webView loadRequest:requestObj];
}
一切似乎都很好。我不懂为什么 ?
最佳答案
您应该在URL
中添加LinkViewController
属性。然后在表格视图控制器中执行以下操作:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
LinkViewController *linkViewController = [[LinkViewController alloc] initWithNibName:@"LinkViewController_iPhone" bundle:nil];
linkViewController.URL = [NSURL URLWithString:@"http://www.google.com"];
[self.navigationController pushViewController:linkViewController animated:YES];
}
现在在LinkViewController中,您可以执行以下操作:
- (void)viewDidLoad {
[super viewDidLoad];
//URL Requst Object
NSURLRequest *requestObj = [NSURLRequest requestWithURL:self.URL];
//Load the request in the UIWebView.
[self.webView loadRequest:requestObj];
}
您最初遇到的问题有两个:
在表视图控制器中,您正在访问
webView
属性,然后对其进行初始化。这就是为什么什么也没发生的原因。您向外界暴露了
LinkViewController
的太多实现细节。如果您在应用程序的许多位置使用LinkViewController
,则要求该类的每个用户都知道要创建URL,创建请求并告诉内部Web视图开始加载。所有这些逻辑都属于LinkViewController
内部。现在,该类的每个用户都只需要知道设置一个简单的URL属性。关于ios - 无法从另一个 View Controller 在WebView中显示URL,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15180498/