2013-02-24 71 views
1

我有四个视图控制器(四个选项卡)的应用程序,和我想要的第四个负载UIWebView中的URL。请检查下面UIWebView的未加载

的代码本FourthViewController.h

#import <UIKit/UIKit.h> 


@interface FourthViewController : UIViewController { 

    IBOutlet UIWebView *webView; 
} 

@property(nonatomic,retain)IBOutlet UIWebView *webView; 
@end 

FourthViewController.m

#import "FourthViewController.h" 


@interface FourthViewController() 

@end 

@implementation FourthViewController 
@synthesize webView; 


- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil 
{ 
    //self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; 
    if (self) { 
     self.navigationItem.title = @"Instagram"; 
     self.view.backgroundColor = [UIColor colorWithWhite:0.9 alpha:1.0]; 

    } 
    return self; 
} 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    UIBarButtonItem *refreshButton = [[[UIBarButtonItem alloc] 
             initWithBarButtonSystemItem:UIBarButtonSystemItemRefresh 
             target:self action:@selector(refreshClicked:)] init]; 
    self.navigationItem.rightBarButtonItem = refreshButton; 

    NSURL *url = [NSURL URLWithString:@"http://www.google.com"]; 
    NSURLRequest *request = [NSURLRequest requestWithURL:url]; 
    [webView loadRequest:request]; 
} 




-(IBAction)refreshClicked:(id)sender { 
    NSLog(@"Clicked"); 

} 



- (NSString *)tabImageName 
{ 
    return @"instagram"; 
} 

@end 

但是当我运行在iPhone模拟器,并到了第四个标签就不会加载网页,是什么问题?

在此先感谢

回答

0

可能是因为你不叫你的超级初始化。你为什么评论这条线:

self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; 

编辑 - 你也应该使用“自我”。在那个webView var的前面,通过你设置的属性来引用它。不是你的错误,只是好的做法。

[self.webView loadRequest:request]; 

另一个响应者是正确的 - 如果你没有连接你的webview IBOutlet到这个类;那么webView的东西将无法正常工作,所以一定要检查一下。

编辑2:如果您不使用界面构建器,那么您需要创建对象并将它们添加到视图中。

self.webview = [[UIWebView alloc] initWithFrame:self.view.bounds]; 
[self.view addSubview:self.webview] 

此屏幕上的任何其他视图/控件的同上。注意:IBOUTLET只是一个#define,它变成什么都没有。它在那里,以便界面生成器知道你可能想用作插座的属性。

+0

取消注释刷新,但仍然没有工作! – SimpleojbC 2013-02-24 15:09:01

+0

如果你不使用IB(storyboard或xib),那么你应该创建你的webview。 'self.webview = [[UIWebView alloc] init]'在使用之前。 – Dave 2013-02-24 15:10:48

+0

添加自我到webView加载请求,仍然不工作 – SimpleojbC 2013-02-24 15:11:11

0

您是否已将代码中的IBOutlet连接到Interface .xib文档?

如果您不明白,请查看this教程。

+0

我没有使用xib文件 – SimpleojbC 2013-02-24 15:07:32

+0

嗯,我推荐他们,但如果你没有,请检查Dave的答案 – DGund 2013-02-24 15:08:29

+0

如果你不使用xib;你在用故事板吗?如果不是 - 那么为什么IBOutlet? – Dave 2013-02-24 15:09:45

1

如果您不使用xib,那么您需要alloc-init并将其添加到视图层次结构中。

因此,在你viewDidLoad方法,例如:

UIWebView *webView = [[UIWebView alloc] initWithFrame:self.view.bounds]; 
[webView loadRequest:request]; 
[self.view addSubview:webView]; 
[webView release]; // if you don't use ARC 

然后,如果你不使用厦门国际银行,你并不需要使用IBOutlet。这只是允许使用Interface Builder(即连接插座)的占位符。

编辑

你应该改变我提供这样(例如)的代码。我只是一个例子。该警告只是声明局部变量隐藏了在.h中创建的变量的声明。

UIWebView *web = [[UIWebView alloc] initWithFrame:self.view.bounds]; 
self.webView = web; 
[self.webView loadRequest:request]; 
[self.view addSubview:self.webView]; 
[web release]; // if you don't use ARC 
+0

哇,它像魔术一样工作,但有些东西显示给我“”webView的本地声明“隐藏实例变量”是这样吗? – SimpleojbC 2013-02-24 15:33:34

+0

我解决了它,我从头文件中删除UIWebView非常感谢 – SimpleojbC 2013-02-24 15:37:26

+0

@ user2104662为您添加了一个编辑。希望能帮助到你。 – 2013-02-24 15:39:12

1
NSURL *url = [NSURL URLWithString:@"http://www.google.com"]; 
NSURLRequest *request = [NSURLRequest requestWithURL:url]; 
self.webView = [[UIWebView alloc] initWithFrame:self.view.bounds]; 
[self.webView loadRequest:request]; 
[self.webView addSubview:self.webview]; 

在酒吧按钮目标方法refreshClicked:

- (IBAction)refreshClicked:(id)sender { 
    [self.webView loadRequest:request];  
}