2

1つのストーリーボードファイル(FifthViewController.storyboard)にプッシュされたボタンから別のxib(WebViewController.xib)にViewControllerを読み込もうとした後、iOS5-6アプリがクラッシュします。正確なエラーメッセージ:Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: '-[UIViewController _loadViewFromNibNamed:bundle:] loaded the "WebViewController" nib but the view outlet was not set.'

このエラーは通常、ビューアウトレットが接続されていない場合、またはViewControllerにクラスが割り当てられていない場合に表示されます。WebViewController.xibでは、ビュー(実際にはこれを切断することはできません)と私のWebビューを含め、すべてが接続されています。私のViewControllerのクラスはWebViewContrllerとして正しくラベル付けされています。

これが私のコードです:

WebViewController.h

@property (weak, nonatomic) IBOutlet UIWebView *webView;
@property (weak, nonatomic) NSURL *urlToLoad;

- (id)initWithURL:(NSURL *)url;

WebViewController.m

@synthesize webView, urlToLoad;

- (void)viewDidLoad {
[super viewDidLoad];
[webView loadRequest:[NSURLRequest requestWithURL:urlToLoad]];
}

- (id)initWithURL:(NSURL *)url {
[self setUrlToLoad:url];
return self;
}

FifthViewController.m-これは、WebViewControllerを呼び出すボタンが配置されているVCです。

- (IBAction)pushedArts:(id)sender {
WebViewController *wvc = [[WebViewController alloc] initWithURL:[NSURL URLWithString:@"http://www.yahoo.com"]];
[self presentModalViewController:wvc animated:YES];
}

画像1画像2 画像は、WebViewController.xibとそのクラス内の接続を示しています。任意の洞察をいただければ幸いです。ありがとうございました。

4

2 に答える 2

2

メソッドは、適切なペン先の関連付けなどを含め、 ViewControllerを適切に初期化するために-[WebViewController initWithURL:]呼び出す必要があります。[super initWithNibName:bundle:]

一般に、初期化子を作成する場合は、スーパークラスの指定された初期化子を(直接的または間接的に)呼び出す必要があります。

于 2013-03-04T00:54:51.543 に答える
0

システムがnibファイルを見つけられなかったか、ビューアウトレットが接続されていないことは明らかなので、nibファイルを確認する必要があると思います。nib ファイルを開き、最後のタブに移動し、他のコンポーネントを接続する通常の方法で、ビュー アウトレットを接続します。

于 2013-03-03T23:29:54.267 に答える