Как программно установить URL-адрес WebView в проекте OSX XCode? - PullRequest
5 голосов
/ 18 января 2011

Я создал новое приложение Mac OSX в XCode, включил WebView через Interface Builder, и теперь я пытаюсь программно сказать ему, какой URL загружать. Вот как далеко я добрался:

  • Создать проект
  • Включить Webkit.framework
  • Включить 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];
}

Но я думаю, что я должен сначала подключить некоторые вещи в Интерфейсном Разработчике?

Моя конечная цель - создать приложение Mac OSX, которое, по сути, является просто приложением View-Based (которое легко сделать с помощью iPhone SDK). Оттуда я хочу включить локальную папку htdocs с моими собственными локальными .html файлами, но сначала нужно указать WebView, какой URL загружать:)

Спасибо!

Ответы [ 3 ]

3 голосов
/ 04 февраля 2011

Код, который вы написали выше, верен, я только что проверил его и успешно загрузил 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, вам также необходимо связать свой код с элементом управления, определенным в Интерфейсном Разработчике.
Чтобы сделать это, в Интерфейсном Разработчике вам нужно найти класс делегата приложения, щелкнуть по нему правой кнопкой мыши (или щелчком по нажатию клавиши «Control») и найти myWebView в списке торговых точек. Перетащите из круга в той же строке, что и myWebView, на свое веб-представление. Я не думаю, что мое объяснение слишком сложное, так что вам, вероятно, повезет больше, если вы прочитаете краткое руководство по Interface Builder на сайте разработчиков Apple.

В вашем файле реализации вам нужно реализовать методы getter и setter для вашего нового свойства, myWebView. Вам (вероятно) не нужно ничего настраивать, так что вы можете просто использовать @synthesize:

@implementation myAppDelegate
@synthesize window;
@synthesize myWebView;
//your function etc
@end
0 голосов
/ 21 апреля 2011

да, вы говорите правильно! он объявил так:

  IBOutlet WebView webView;

но это не требует необходимого кодирования с @sinthesize, вы можете просто использовать метод awakeFromNib в вашей реализации appController.

-(void)awakeFromNib{
    //etc etc
}
0 голосов
/ 18 января 2011

Вы объявили свое свойство webView как IBOutlet и подключили его к своему WebView в Интерфейсном Разработчике?

Если нет, то webView не настроен, и ваш код просто ничего не сделает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...