我正在使用界面生成器为我正在创建的应用创建UI。该应用程序有一个显示一系列按钮的单个屏幕。点击一个按钮会显示一个覆盖按钮的相关视图。点击另一个按钮隐藏以前的覆盖视图并显示另一个视图。
太让管理更简单的用户界面在IB我已经决定要创建多个笔尖文件是点击相关按钮时会出现在每个子视图。然后,我使用UINib
类在视图控制器的viewDidLoad
方法中加载子视图的nib文件。
这背后的想法是,以避免在一个单一的笔尖文件堆叠在彼此的顶部上,因为这将是很难在IB来操纵多个视图。我可以在代码中创建所有视图,但是这需要很多繁琐的编码,因为每个子视图的布局都非常复杂(具有多个子视图)。
从nib文件加载子视图的示例代码。
- (void)viewDidLoad
{
UINib *aSubViewNib = [UINib nibWithNibName:@"aSubView" bundle:nil];
NSArray *bundleObjects = [aSubViewNib instantiateWithOwner:self options:nil];
// get root view from bundle array
UIView *aSubView = [bundleObjects objectAtIndex:0];
[self.view addSubview:aSubView];
...
上面的代码重复其他视图。
总之我有一个有分层的是显示/隐藏通过点击按钮的观点在一个屏幕的iPhone应用程序。这是通过一个具有关联的nib文件的单个视图控制器以及一系列用于视图控制器的viewDidLoad方法中加载的子视图的附加nib文件实现的。
问题!
对不起,长介绍,但我想很清楚这是我在做什么。
- 是我的做法不好或不寻常?
- 这样做有什么潜在的问题吗?
- 当他们需要动态接口时,其他人还做了什么,并且 仍然希望在Interface Builder中保留所有内容?
注意
之前有人问我为什么不只是显示一个新的屏幕上的子视图,并使用导航栏,让我说,我有很好的理由,我不明白的iOS UI准则。上面的用例并不完全是我的用例,但它清楚地描述了问题,而没有陷入我的开发应用程序中。
而且我知道我可以写所有的子视图作为代码,但每个子视图有子视图一个复杂的布局,这将是一个很大的代码和插科打诨,试图让他们找合适的。
在此先感谢。
因此,对于我将视图拆分为单独的nib文件的唯一原因是为了更容易地管理IB中的这些视图,您认为我的方法可以安全使用,还是会破坏Apple的准则? – Camsoft 2012-01-13 10:18:54
关于你在做什么没有规则或指南。你在这方面很好。 – Jim 2012-01-13 15:38:06
我添加了许多开发人员使用的真实软件组件的示例。有关更多详细信息,请参阅上面的答案 – Jim 2012-01-13 17:22:49