Xcode 4.2-在分离的Nib文件中存储视图

时间:2011-11-07 03:46:51

标签: objective-c xcode ios5

我正在尝试为iOS应用程序创建一个相当标准的UI,一个选项卡控制器,其中一个选项卡上有一个导航控制器。导航控制器将连接其他一些视图。

我想添加分离的nib文件,这样我的所有视图都不会出现在主故事板文件中(Apple建议这样做)。我已尝试按照此处的说明操作:http://developer.apple.com/library/ios/#featuredarticles/ViewControllerPGforiPhoneOS/BasicViewControllers/BasicViewControllers.html#//apple_ref/doc/uid/TP40007457-CH101-SW33

不幸的是,我无法在界面构建器中的任何位置找到视图控制器的“Nib Name”属性。我想知道这是否已经从Xcode 4.2中删除,因为我可以在旧版本的Xcode中找到关于这样做的信息。无论哪种方式,如果有人可以告诉我如何使用分离的nib文件来做我正在做的事情,这将是非常有帮助的。是的,我四处搜索,还没有发现任何有用的东西。

非常感谢任何帮助。

更新:

我是从故事板上做的。我已经附上了一个屏幕截图,显示了我想要做的事情。视图的笔尖称为View2.xib。您可以从我的屏幕截图中看到我只有“标题”和“标识符”,其中应列出“笔尖名称”:http://i.stack.imgur.com/yPJse.png

2 个答案:

答案 0 :(得分:1)

  • 如果使用Objective-C代码创建视图控制器,则在创建视图控制器时将nib名称传递给-[UIViewController initWithNibName:bundle:]方法。

  • 如果要将视图控制器放在与其控制的视图相同的XIB中,则无需设置nib名称。只需将视图控制器的视图插座连接到它将控制的视图。

  • 如果要将视图控制器放在某个XIB test.xib中,并且希望它加载另一个XIB other.xib,则在视图控制器中设置属性检查器中的nib名称选自:

nib name field in IB

答案 1 :(得分:1)

我使用的方法是将外部Nib作为故事板中视图的子视图加载。在viewDidLoad中,执行以下操作:

- (void)viewDidLoad
{
    [super viewDidLoad];
    nib = [UINib nibWithNibName:@"MyNib" bundle:nil];
    UIView* subview = [[nib instantiateWithOwner:self options:nil] objectAtIndex:0];
    [self.view addSubview:subview];
    [subview setTranslatesAutoresizingMaskIntoConstraints:NO];
    NSDictionary *viewsDict = NSDictionaryOfVariableBindings(subview);
    [self.view addConstraints:[NSLayoutConstraint
               constraintsWithVisualFormat:@"|[subview]|"
               options:0 metrics:nil views:viewsDict]];
    [self.view addConstraints:[NSLayoutConstraint
               constraintsWithVisualFormat:@"V:|[subview]|"
               options:0 metrics:nil views:viewsDict]];

}