2013-02-24 159 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];  
}