我有一个需要打开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];
}
一切似乎都很好。我不明白为什么?
答案 0 :(得分:2)
您应该向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属性。