我在Xcode中创建了一个新的Mac OSX应用程序,通过Interface Builder包含了一个WebView,现在我正在尝试以编程方式告诉它要加载哪个URL。这是我有多远:
然后从那里我已经包含了我认为访问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:)
谢谢!
答案 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
}