UIWebView不在ios中显示内容
我一直在围绕一个小项目工作,该项目需要一个与SplitViewController类似的GUI。现在我所做的是,我有两个UIViewController,即MasterViewController和DetailViewController,它们被添加为ViewController的子视图 ViewController.m的代码如下所示UIWebView不在ios中显示内容,ios,webview,Ios,Webview,我一直在围绕一个小项目工作,该项目需要一个与SplitViewController类似的GUI。现在我所做的是,我有两个UIViewController,即MasterViewController和DetailViewController,它们被添加为ViewController的子视图 ViewController.m的代码如下所示 - (void)viewDidLoad { UIScreen *screen = [UIScreen mainScreen]; CGRect fu
- (void)viewDidLoad
{
UIScreen *screen = [UIScreen mainScreen];
CGRect fullScreenRect = screen.bounds; // always implicitly in Portrait orientation.
width = fullScreenRect.size.width;
height = fullScreenRect.size.height;
detailViewController = [[DetailViewController alloc] initWithNibName:@"DetailViewController" bundle:nil];
masterViewController = [[[MasterViewController alloc]initWithNibName:@"MasterViewController" bundle:nil] autorelease];
masterViewController.view.frame = CGRectMake(0, 0, 299, height);
detailViewController.view.frame = CGRectMake(300, 0, width-300, height);
[self.view addSubview:masterViewController.view];
[self.view addSubview:detailViewController.view];
}
现在在MasterViewController加载方法中,我添加了一个子视图MasterTableViewController
MasterTableViewController类如下所示
@interface MasterTableViewController : UITableViewController
{
DetailViewController *detailViewController;
}
与UITableViewController相关的所有功能都已完成。。。我还添加了从用户添加URL并将其存储在MasterTableView中的功能。
现在,在下面的函数中,我尝试使用所需字符串调用DetailViewController的loadWebView函数。对函数的调用是完美的
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
NSString *urlString = [_objects objectAtIndex:indexPath.row];
detailViewController = [[DetailViewController alloc]init];
[detailViewController loadWebView:urlString];
}
在DetailViewController的loadWebView方法中,我有以下实现
-(void) loadWebView: (NSString *) urlToLoad
{
self.webView = [[[UIWebView alloc]
initWithFrame:CGRectMake(0, 45, self.view.frame.size.width, self.view.frame.size.height)] autorelease];
[self.webView setDelegate:self];
NSLog(@"SELF->WEBVIEW: %@",self.webView);
NSURL *url = [NSURL URLWithString:urlToLoad];
NSLog(@"loading url %@ %@", urlToLoad, self.webView);
NSURLRequest *requestObj = [NSURLRequest requestWithURL:url];
[self.webView loadRequest:requestObj];
}
我还实现了以下功能,以确保我的Webview正常工作
- (void)webViewDidStartLoad:(UIWebView *)webView
{
NSLog(@"webViewDidStartLoad");
}
- (void)webViewDidFinishLoad:(UIWebView *)webView
{
NSLog(@"webViewDidFinishLoad");
}
现在当我运行我的程序时,日志会打印所有这些东西
2012-10-15 20:04:21.621 SyneBlogApp[2320:c07] device width height 768.000000 1024.000000
2012-10-15 20:04:21.630 SyneBlogApp[2320:c07] calling viewDidLoad for detailView
2012-10-15 20:04:21.636 SyneBlogApp[2320:c07] /Users/Library/Application Support/iPhone Simulator/5.1/Applications/B846EDA4-49CF-4DD3-AAB3-FF8BC19C65DA/Documents/Data.plist:
2012-10-15 20:04:22.942 SyneBlogApp[2320:c07] calling viewDidLoad for detailView
2012-10-15 20:04:22.954 SyneBlogApp[2320:c07] SELF>WEBVIEW: <UIWebView: 0x6a94510; frame = (0 45; 768 1004); layer = <CALayer: 0x6a94930>>
2012-10-15 20:04:22.955 SyneBlogApp[2320:c07] loading url http://wordpress.com <UIWebView: 0x6a94510; frame = (0 45; 768 1004); layer = <CALayer: 0x6a94930>>
2012-10-15 20:04:22.994 SyneBlogApp[2320:c07] webViewDidStartLoad
2012-10-15 20:04:26.828 SyneBlogApp[2320:c07] webViewDidFinishLoad
现在我真的不知道出了什么问题。即使所有的事情都在日志中运行良好,网页内容仍然没有显示出来。。伙计们,如果你们有任何关于出了什么问题的线索,请帮助 这个
detailViewController = [[DetailViewController alloc]init];
…创建一个新的
DetailViewController
,而不是使用您已经创建并在显示的第一个代码段中作为显示部分的控制器。因此,您正在为屏幕上未显示的控制器/视图加载web视图。感谢飞利浦的回复,但如果我省略了这一行,那么我将如何访问[detailViewController loadWebView:urlString]函数。我尝试了您所说的,但由于DetailViewController对象是在ViewController.m中创建的,因此它在MasterTableViewController.m中返回nil,因为我只在MasterTableViewController.h文件中声明了DetailViewController*DetailViewController。。那么,如何访问在ViewController.mIn MasterTableViewController中创建的DetailViewController对象,使DetailViewController
成为一个属性,而不仅仅是一个实例变量。然后,在创建主视图和详图的位置,设置masterViewController.detailViewController=detailViewController
@philip-是的,我这样做了,但它仍然返回null,任何其他选项都会在您执行赋值的位置记录master和detail的值,并在您获得null作为detail的位置记录master的值。也许你在某个地方创造了一个额外的大师,就像你在细节方面所做的一样。@philip-对不起,伙计,回答有点晚了。。。是的,你的建议对我有用。。。再次感谢
detailViewController = [[DetailViewController alloc]init];