【问题标题】:Error in loading ViewController- loaded the nib but the view outlet was not set加载 ViewController 时出错 - 加载了 nib 但未设置视图出口
【发布时间】:2013-03-03 23:24:20
【问题描述】:

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

此错误通常在未连接视图出口或未为视图控制器分配类时出现。在 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];
}

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

【问题讨论】:

    标签: ios objective-c uiviewcontroller


    【解决方案1】:

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

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

    【讨论】:

    • 将我的初始化方法更改为:- (id)initWithURL:(NSURL *)url { self = [super initWithNibName:@"WebViewController" bundle:nil]; [self setUrlToLoad:url]; return self; } 产生相同的错误。然而,我认为这是正确的树。
    • 等等,你的 WebViewController.xib 截图显示了segues。您确定这实际上不是您屏幕截图中的情节提要吗?
    • 从那以后我已经对其进行了更改,但 WebViewController.xib 实际上是一个情节提要(抱歉贴错标签)。
    • 是故事板还是故事板?如果它是故事板,它与您拥有 FifthViewController 的故事板相同吗?如果它不再是情节提要,请按原样发布笔尖的实际屏幕截图。
    • 它不再是一个故事板,即使它是,它也是一个不同的故事板。它现在是一个 xib 文件,它(仍然)与包含我所有其他视图控制器的情节提要分开。我会更新截图。
    【解决方案2】:

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

    【讨论】:

    • 我刚刚在我的问题的编辑中包含了一张图片。我相信一切都正确连接。也许我在 WebViewController.m 中的自定义初始化程序出错了?
    猜你喜欢
    • 1970-01-01
    • 2012-07-23
    • 1970-01-01
    • 1970-01-01
    • 2011-07-20
    • 2020-06-07
    • 2018-01-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多