私は ObjC とココア開発者を学んでいて、本当の「スタンパー」に出くわしました。グーグルを使い果たしたので、私は絶望の帽子を丁重に飾り、あなたにプレゼントします:
クラスとビュー コントローラー:
クラス「Content Window」は、viewcontroller インスタンスをインポートし、ウィンドウに配置します。
ContentWindow.h
#import <Foundation/Foundation.h>
#import <WebKit/WebView.h>
#import "ContentViewController.h"
@interface ContentWindow : NSWindow{
ContentViewController* viewController;
}
@property IBOutlet ContentViewController* viewController;
-(NSWindow *) newWindow;
@end
ContentWindow.m
#import "ContentWindow.h"
@implementation ContentWindow
@synthesize viewController;
-(NSWindow *) newWindow{
//Builds the window as 'window' and displays it successfully here
//... [code redacted for brevity]
// Build view
viewController = [[ContentViewController alloc] initWithNibName:@"ContentViewController" bundle:nil];
[window setContentView: viewController.view];
NSString *urlString = @"http://www.google.com";
[[viewController.webView mainFrame] loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:urlString]]];
[viewController.title setStringValue:@"my title"];
}
@end
私はインターフェースで2つのことをしようとしています:
[viewController.title setStringValue:@"my title"];
これにより、ビュー要素 'title' が "my title" に正常に設定されます。
[[viewController.webView mainFrame] loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:urlString]]];
ただし、これはエラーをスローします。
Receiver type 'WebFrame' for instance message is a forward declaration.
行のセクションに赤で下線を付けます。
viewController.webView mainFrame
私のView Controllerは次のとおりです。
ContentViewController.h
#import <Cocoa/Cocoa.h>
#import <WebKit/WebView.h>
@interface ContentViewController : NSViewController {
IBOutlet NSTextField *title;
IBOutlet WebView *webView;
}
@property IBOutlet WebView *webView;
@property IBOutlet NSTextField *title;
@end
ContentViewController.m
#import "ContentViewController.h"
@interface ContentViewController ()
@end
@implementation ContentViewController
@synthesize title, webView;
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
}
return self;
}
@end
最後に、このクラスを使用するために、AppDelegate クラスからコンテンツ ウィンドウをインスタンス化しています。
contentWindow = [[ContentWindow new] newWindow];
ContentWindow.h を AppDelegate.h にインポートし、次のように設定しました。
__strong NSWindow * contentWindow
AppDelegate 合成インスタンス変数として。
IB で両方のアイテムをリンクしました (間違いなく!) また、別のスレッドで提案された Webkit 基盤をプロジェクトに追加しました。
何が起こっているのか一生理解できない。論理的な答えは、Xcode を置いて、「Learn Xcode and Objective c」の本を手に取ることだとわかっています (何かを試すのに十分なほど学んだと思うほど傲慢だった場所の約半分にブックマークが付いています)。私がそれを行う前に、偶然に:
誰でも助けてもらえますか?
いつもありがとう、AtFPt。