加载ViewController时出错,加载了nib但未设置视图插座

时间:2013-03-03 23:24:20

标签: ios objective-c uiviewcontroller

尝试从一个故事板文件(FifthViewController.storyboard)中推送的按钮加载ViewController到另一个xib(WebViewController.xib)后,我的iOS 5-6应用程序崩溃了。确切的错误消息:Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: '-[UIViewController _loadViewFromNibNamed:bundle:] loaded the "WebViewController" nib but the view outlet was not set.'

当未连接视图插座或尚未为ViewControllers分配类时,通常会出现此错误。在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];
}

image 1 image 2 这些图像显示了WebViewController.xib及其类中的连接。任何见解将不胜感激。谢谢。

2 个答案:

答案 0 :(得分:2)

您的-[WebViewController initWithURL:]方法应致电[super initWithNibName:bundle:]以正确初始化您的视图控制器,包括关联正确的笔尖等。

通常,如果你编写任何初始化程序,它必须(直接或间接)调用超类的指定初始值设定项。

答案 1 :(得分:0)

我认为您需要检查您的nib文件,因为我很清楚系统无法找到您的nib文件,或者视图插座未连接。打开您的nib文件,转到最后一个选项卡,然后连接您的视图插座,这是您应该连接其他组件的正常方式