如何以编程方式在OSX Xcode项目中设置WebView的URL?

时间:2011-01-18 01:26:54

标签: macos webview

我在Xcode中创建了一个新的Mac OSX应用程序,通过Interface Builder包含了一个WebView,现在我正在尝试以编程方式告诉它要加载哪个URL。这是我有多远:

  • 创建项目
  • 包含Webkit.framework
  • 在Interface Builder中包含WebView

然后从那里我已经包含了我认为访问WebView所需的内容,包括:

#import <WebKit/WebKit.h>
@synthesize webView;
// etc, I think this is all good

我倒下的地方是访问WebView本身并告诉它要加载哪个URL。我在尝试:

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
    NSString *urlAddress = @"http://www.example.com/";
    NSURL *url = [NSURL URLWithString:urlAddress];
    NSURLRequest *requestObj = [NSURLRequest requestWithURL:url];
    [[webView mainFrame] loadRequest:requestObj];
}

但我想我应该首先在Interface Builder中连接一些东西?

我的最终目标是创建一个Mac OSX应用程序,它基本上只是一个基于视图的应用程序(使用iPhone SDK很容易)。从那里我想包含一个本地htdocs文件夹和我自己的本地.html文件,但第一步是告诉WebView要加载哪个URL:)

谢谢!

3 个答案:

答案 0 :(得分:3)

您上面编写的代码是正确的,我刚刚测试了它并成功加载了一个URL。

我不确定你在头文件中声明了什么,但你应该有这样的东西:

   //usual #import(s)
   #import <WebKit/WebKit.h>

   @interface myAppDelegate : NSObject <NSApplicationDelegate> {
       WebView *myWebView;
       //other instance variables
   }

   @property (retain, nonatomic) IBOutlet WebView *myWebView;
   //other properties and methods
   @end

正如@pulazzo所说,您还需要将您的代码与Interface Builder中定义的控件相连接 为此,在Interface Builder中,您需要找到应用程序委托类,右键单击(或按住Control键单击)并在出口列表中找到myWebView。从与myWebView相同的行上的圆圈拖到您的网络视图上。我不认为我的解释太多了,所以在Apple开发者网站上阅读Interface Builder Quick Start Guide可能会有更多的运气。

在您的实现文件中,您需要为新属性myWebView实现getter和setter方法。您(可能)不需要对此进行任何自定义,因此您只需使用@synthesize

@implementation myAppDelegate
@synthesize window;
@synthesize myWebView;
//your function etc
@end

答案 1 :(得分:0)

您是否将您的webView属性声明为IBOutlet并将其连接到Interface Builder中的WebView?

如果没有,那么就没有设置webView,你的代码就会默默无法做任何事情。

答案 2 :(得分:0)

是的,你说对了!他这样说:

  IBOutlet WebView webView;

但它不需要使用@sinthesize进行必要的编码, 你可以在appController实现中使用awakeFromNib方法。

-(void)awakeFromNib{
    //etc etc
}