UITableView vs UITableViewController

时间:2009-03-08 14:16:08

标签: iphone

有人可以向我解释UITableViewController相对于UITableView的优势吗?通常,我使用控制器,但基本表视图似乎更灵活。

6 个答案:

答案 0 :(得分:13)

我总是使用UITableView。我从不使用UITableViewController。

使用UITableViewController令人困惑。除容器控制器外,每个控制器都应该执行一个屏幕。

嗯,UITableViewController是一个控制器,大多数时候,tableView根本不是唯一的东西。

如果你看一下文档: http://developer.apple.com/library/ios/#documentation/uikit/reference/UITableViewController_Class/Reference/Reference.html

与UITableView相比,UITableViewController提供的界面非常少。这些都不是必需的。

– initWithStyle: 

(呃?我在笔尖中启动我的tableView并且我还是定制了很多)

获取表格视图

  tableView  property 

(原始的tableView)

配置表行为

  clearsSelectionOnViewWillAppear  property 

(好的,只需在ViewWillAppear上放一些代码)

刷新表格视图

  refreshControl  property 

[tableView重新加载]

所以你看,

因此,除非您希望代码看起来更整洁(并且不多),否则我没有理由使用UITableViewController。

答案 1 :(得分:5)

我认为你不了解自己的问题。

UITableViewController是控制器

UITableView是视图

一个不是更好而是另一个,它们是完全不同的对象,用于完全不同的东西。

我花了一些时间学习模型 - 视图 - 控制器模式,因此普遍采用Cocoa和iPhone SDK。

The Model-View-Controller Design Pattern

答案 2 :(得分:2)

我们的想法是ViewControllers拥有一个子视图(和子视图控制器)树,并管理与其子视图的调度事件。例如,您可能有一个包含图像的视图,该视图位于处理方向更改和内存警告等的视图控制器中。

答案 3 :(得分:1)

这是我发现Cocoa非常困惑的一件事:Apple的MVC实现(或至少他们使用的术语)值得怀疑。在Cocoa中,大多数视图本身实际上在某种程度上作为控制器在MVC模式定义它们时起作用(只需看UITableView - 它的大部分方法实际上都是控制器方法)。因此,除了已经在某种程度上是控制器之外,你还拥有Apple的视图控制器的额外概念。您根本不需要使用 UITableViewController这一事实(即使使用数据绑定)基本上证明该视图充当了自己的控制器。在MVC中,您无法在没有控制器的情况下将视图绑定到模型(这是MVC中控制器的整个 point )。

Apple的开发人员认为,"视图控制器" (例如UITableViewController)实际上是一个稍高级别的帮助器/管理器类,它管理更低级别的UITableView类,并启用少数additional capabilities,它们更多地与表格有关查看与应用程序的常规UI的接口。

此外,似乎Apple打算让视图控制器实际上更像是一个屏幕控制器,建议每个屏幕只有一个视图控制器(可能意味着你不能嵌套视图控制器)。我认为将这个概念称为视图控制器是一种误称。

请不要犹豫是否要对这个人进行纠正,我自己对Obj-C / Cocoa仍然很陌生。

答案 4 :(得分:0)

上面的链接返回“找不到页面”。出于某种原因,即使更正的link在超链接时返回“找不到页面”(也许Apple不允许链接到他们的开发者网站)。

要查找相关信息,请转到Apple的开发人员连接(http://developer.apple.com/index.html)并搜索“cocoa model-view-controller设计模式”。

在结果表中,选择“Cocoa Fundamentals Guide:Cocoa Design Patterns”。在该页面上向下滚动左侧的目录,直到看到“模型 - 视图 - 控制器设计模式”项。选择该项目以阅读有关该特定设计模式的更多详细信息。

答案 5 :(得分:0)

UITableView是一个视图,UITableViewController是一个以UITableView为根视图的控制器。

所以,使用UITableViewController

  1. 您有一个UITableView本身的根视图。因此,在UITableView作为父视图的控制器中,UIView占用的内存较少。

  2. 如果您需要一个控制器并且UITableView作为其主要显示视图,它会为您提供一个即用型模板。

  3. 静态表格视图仅在嵌入UITableViewController个实例时有效。