有人可以向我解释UITableViewController相对于UITableView的优势吗?通常,我使用控制器,但基本表视图似乎更灵活。
答案 0 :(得分:13)
我总是使用UITableView。我从不使用UITableViewController。
使用UITableViewController令人困惑。除容器控制器外,每个控制器都应该执行一个屏幕。
嗯,UITableViewController是一个控制器,大多数时候,tableView根本不是唯一的东西。
与UITableView相比,UITableViewController提供的界面非常少。这些都不是必需的。– initWithStyle:
(呃?我在笔尖中启动我的tableView并且我还是定制了很多)
获取表格视图
tableView property
(原始的tableView)
配置表行为
clearsSelectionOnViewWillAppear property
(好的,只需在ViewWillAppear上放一些代码)
刷新表格视图
refreshControl property
[tableView重新加载] ?
所以你看,
因此,除非您希望代码看起来更整洁(并且不多),否则我没有理由使用UITableViewController。
答案 1 :(得分:5)
我认为你不了解自己的问题。
UITableViewController是控制器。
UITableView是视图。
一个不是更好而是另一个,它们是完全不同的对象,用于完全不同的东西。
我花了一些时间学习模型 - 视图 - 控制器模式,因此普遍采用Cocoa和iPhone SDK。
答案 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
:
您有一个UITableView
本身的根视图。因此,在UITableView
作为父视图的控制器中,UIView
占用的内存较少。
如果您需要一个控制器并且UITableView
作为其主要显示视图,它会为您提供一个即用型模板。
静态表格视图仅在嵌入UITableViewController
个实例时有效。