iOS:loadView的推荐模式

iOS:loadView的推荐模式,ios,uiview,uiviewcontroller,loadview,Ios,Uiview,Uiviewcontroller,Loadview,如果我在UIViewController中有一个复杂的视图层次结构,那么什么时候才适合将主视图分解到它自己的类中,即使它在其他地方不可重用?如果我这样做,对于视图上的按钮,正确的事件处理方法是什么?通过视图类将目标直接添加到按钮属性或委托 我和一位同事就是否应该创建一个单独的视图类进行了长时间的辩论 (在本次讨论中,假设我们希望不惜一切代价避免NIB文件。)您可以为一个视图控制器创建单独的视图。如果希望基于特定条件加载特定视图,则可以使用一个自定义init方法将视图加载到视图控制器(如给定) -

如果我在UIViewController中有一个复杂的视图层次结构,那么什么时候才适合将主视图分解到它自己的类中,即使它在其他地方不可重用?如果我这样做,对于视图上的按钮,正确的事件处理方法是什么?通过视图类将目标直接添加到按钮属性或委托

我和一位同事就是否应该创建一个单独的视图类进行了长时间的辩论


(在本次讨论中,假设我们希望不惜一切代价避免NIB文件。)

您可以为一个视图控制器创建单独的视图。如果希望基于特定条件加载特定视图,则可以使用一个自定义init方法将视图加载到视图控制器(如给定)

- (id)initWithView:(UIview *)view {

self = [super init];

if(self) {

    [self setView:view];
}

return self;
}


如果视图中有不同的按钮,可以在视图中编写按钮操作方法。要将这些操作发送到viewcontroller,可以在视图中编写协议,并将viewcontroller实例设置为在视图控制器中委托和实现这些协议方法。为了区分动作,您可以为每个按钮设置标签,并根据标签在view controller中执行相应的动作。

MVC应始终保持控制器小而干净。我要求我的团队始终在逻辑上将复杂视图划分为小视图


至于添加控件,请始终尝试使用更简单的方法。必要时使用委托。

就我个人而言,我喜欢小而整洁的课堂。出于这个原因,一旦我有了一个可以被看作是单独的“控件”的东西,我就为它创建一个UIView子类。在我现在正在进行的项目中,有一个图标栏。我为图标和图标栏创建了一个单独的类。原因是我想避免将图标代码与条形码混用。从这个角度看,授权似乎更合适。如果您想稍后重构“控件”,比如用按钮的自定义实现替换UIButton,这也会有所帮助。