1

我有一个带有四个视图控制器(四个选项卡)的应用程序,我正在尝试第四个使用 UIWebView 加载 url .. 请检查下面的代码

这个FourthViewController.h

    #import <UIKit/UIKit.h>


@interface FourthViewController : UIViewController {

    IBOutlet UIWebView *webView;
}

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

第四视图控制器.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 模拟器并进入第四个选项卡时,它不会加载网络,这是什么问题?

提前致谢

4

4 回答 4

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

然后,如果你不使用 xib,你就不需要使用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
于 2013-02-24T15:19:59.630 回答
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];    
}
于 2013-02-24T17:56:59.680 回答
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 ,它什么都没有。它在那里,以便界面构建器知道您可能希望将哪些属性用作出口。

于 2013-02-24T15:03:50.617 回答
0

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

不明白的可以看看这个教程。

于 2013-02-24T15:04:18.757 回答