我正在尝试为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
答案 0 :(得分:1)
如果使用Objective-C代码创建视图控制器,则在创建视图控制器时将nib名称传递给-[UIViewController initWithNibName:bundle:]
方法。
如果要将视图控制器放在与其控制的视图相同的XIB中,则无需设置nib名称。只需将视图控制器的视图插座连接到它将控制的视图。
如果要将视图控制器放在某个XIB test.xib
中,并且希望它加载另一个XIB other.xib
,则在视图控制器中设置属性检查器中的nib名称选自:
答案 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]];
}