自从iOS 5.0引入了childViewControllers的概念以来,它似乎可以完成所有工作,我习惯使用UIView来处理xib文件。应该停止从xibs加载UIView?
场景的地方我通常会使用UIView并让它包含xib文件中的所有内容。如果有任何需要实现的委托和数据源,UIView用于加载。
这样使用的东西:
NSArray* nibsArray = [[NSBundle mainBundle] loadNibNamed:@"ABCustomLoginView" owner:self options:nil];
if(nibsArray && [nibsArray count] > 0) {
self = [[nibsArray objectAtIndex:0] retain];
}
这似乎永远是正确的,它用来打破的MVC。 为什么UIView会处理另一个UIView的事件?
既然childViewController的存在,我是否应该总是制作一个尺寸合适的UI片段,它具有自己的功能,并且可以稍后重新用于单独的UIViewController?
或者有些情况下,以前的方法仍然有优势?
我正在谈论的情景中,您有一个可重复使用的部分屏幕,您可以在多个屏幕中重复使用。 它在iPad应用程序中很常见。 在多个地方使用它,并避免编写它的用户界面,我曾经使用一个笔尖,并加载该笔尖作为customView的子视图。 在大多数情况下,如果该视图具有tableView,则customView将处理tableView的委托。 在这样的情况下,不会childViewControllers是一个完美的选择? 其类似于android中片段的概念。 –
我明白了。是的,这是一个有效的子视图控制器应用程序。在原始问题中,你认为视图不应该处理其他视图事件是正确的,因此在这种情况下,子视图控制器将拥有其视图并处理其事件。 (我仍然会从故事板加载子视图控制器)。如果你是一个小团队,我将把它全部放在一个故事板中,并将所有的子视图容器对象指向在多个位置使用的子视图控制器的“场景”。 – atomkirk
好。故事板很好。我不是在讨论storyboard或xib。我的观点是在UIViews和childViewControllers之间进行选择。 虽然故事板是我还没有在项目中使用的东西,但是如果有多个人试图捣乱故事板,恐怕会出现git冲突。 这只是整个项目的一个文件。对 ? 即使我们将其分解成多个故事板,我们也会失去使用故事板本身的目的。 –