对于具有不同类型控件的单个视图,我是不是需要多个控制器?

Posted

技术标签:

【中文标题】对于具有不同类型控件的单个视图,我是不是需要多个控制器?【英文标题】:Do I need multiple controllers for a single view with different types of controls?对于具有不同类型控件的单个视图,我是否需要多个控制器? 【发布时间】:2009-06-04 06:26:50 【问题描述】:

如果我有一个包含多个按钮、一个表格和一些其他控件的视图,我是否需要为每种类型(按钮、表格等)提供一个控制器,或者我是否应该为每个视图设置一个控制器来处理所有必要的行动?似乎不可能使用单个控制器,因为它们可能必须从不同的父类继承。最好的方法是什么?

【问题讨论】:

【参考方案1】:

您可以对所有这些使用一个控制器。将所有动作放在控制器中,并通过声明 IBActions 并在 Interface Builder 中链接它们来连接按钮。 Aaron Hillegass 的 Cocoa Programming for Mac OS X 的前几章很好地解释了这一点。

如果你有一个 UITableView,你必须记得设置 UITableViewDelegate 并确保你实现了它需要的方法:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

对于其他人,在您的控制器中设置 IBOutlets 并将它们连接到 Interface Builder 中。根据您使用的控件,您可能需要其他委托(例如文本字段委托)。

【讨论】:

【参考方案2】:

反应很好,内文。此外,Cocoa (Touch) API 大量使用了委托。这使您可以将单个控制器用于多个事物,而无需对所有事物进行子类化。然后,控制器是多个组件(例如 UITableView)的委托。

【讨论】:

以上是关于对于具有不同类型控件的单个视图,我是不是需要多个控制器?的主要内容,如果未能解决你的问题,请参考以下文章

用于视图模型的具有多个 DataTemplate 的 ItemsControl

在单个文件中保存并打开多个DiagramControls

使用 LayerDrawable 相互堆叠的图像数组。(在单个图像视图中显示多个图像)

具有多个表视图的 Ipad 设计

单个笔尖的多个视图

单个服务器进程可以监听多个端口吗?