使用.xib与故事板的问题

时间:2013-05-17 17:15:56

标签: iphone ios storyboard xib

嘿我正在尝试打开使用xib接口文件设计的视图控制器。我使用以下代码行从创建为故事板组件的视图控制器中生成控制器。

YourViewController *viewController [[YourViewControlleralloc] initWithNibName:@"ViewControllerName" bundle:nil];

[self presentViewController:viewController animated:YES completion:nil]; 

我之前从未设置过.xib的视图控制器,也没有通过故事板链接到一个视图控制器,所以任何事情都可能出错。这是我尝试呈现视图时遇到的错误。

  

2013-05-17 13:06:45.120咖啡[8991:907] * 终止应用程序   未捕获的异常'NSInternalInconsistencyException',原因:   ' - [UIViewController _loadViewFromNibNamed:bundle:]加载了   “PeekPagedScrollViewController”笔尖但未设置视图插座。'

3 个答案:

答案 0 :(得分:1)

将.xib中的文件所有者设置为视图控制器的类(可能称为PeekPagedScrollViewController)。

然后将其view出口连接到.xib文件中的主视图。

答案 1 :(得分:0)

它已正确连接我刚忘记声明initWithNibName方法,因此当我从storyboard中调用它时它崩溃了。愚蠢的错误,但感谢所有伟大的反馈@matt

答案 2 :(得分:0)

将Storyboard视图控制器自定义类设置为您的类名(您的xib也引用的那个),然后在同一个类中,只需使用以下代码覆盖initWithCoder

- (id)initWithCoder:(NSCoder *)aDecoder
{
    self = [[super initWithCoder:aDecoder] initWithNibName:@"YourCustomViewControllerXibsName" bundle:nil];
    if( self ) {
    }
    return self;
}

这将使您能够在Storyboard中设计布局和segue过渡,但在独立的nib文件中设计您的布局。

Storyboard将处理实例化,但是当调用initWithCoder:时,initWithNibName:将是通过xib实例化self的方法。