如果我在 UIViewController 中有一个复杂的视图层次结构,那么何时将主视图分解到它自己的类中是合适的,即使它不能在其他地方重用?如果我要这样做,该视图上的按钮的正确事件处理方法是什么 - addTarget 直接添加到按钮属性或通过视图类委托?
我与一位同事就我们是否应该始终创建一个单独的视图类进行了长时间的辩论。
(为了讨论的目的,让我们假设我们要不惜一切代价避免使用 NIB 文件。)
如果我在 UIViewController 中有一个复杂的视图层次结构,那么何时将主视图分解到它自己的类中是合适的,即使它不能在其他地方重用?如果我要这样做,该视图上的按钮的正确事件处理方法是什么 - addTarget 直接添加到按钮属性或通过视图类委托?
我与一位同事就我们是否应该始终创建一个单独的视图类进行了长时间的辩论。
(为了讨论的目的,让我们假设我们要不惜一切代价避免使用 NIB 文件。)
MVC 应该始终保持控制器小而干净。我要求我的团队始终在逻辑上将复杂视图分成小视图。
至于添加控件,请始终尝试更简单的方法。必要时使用委托。
您可以为一个视图控制器创建单独的视图。如果要根据特定条件加载特定视图,则可以使用一种自定义 init 方法将视图加载到给定的视图控制器
- (id)initWithView:(UIview *)view {
self = [super init];
if(self) {
[self setView:view];
}
return self;
}
如果您在视图中有不同的按钮,您可以在该视图本身中编写按钮操作方法。为了将这些操作传递给视图控制器,您可以在视图中编写协议并设置视图控制器实例以在视图控制器中委托和实现这些协议方法。为了区分动作,您可以为每个按钮设置标签,并据此在视图控制器中执行适当的动作。