Objective c继承/协议混淆:UITableViewController

时间:2011-04-07 16:00:44

标签: iphone objective-c cocoa-touch xcode cocoa-design-patterns

现在我正试图围绕Objective C和XCode。我正在玩UITableView,我在分离

背后的概念时遇到了问题
  • 的UITableViewController
  • 的UITableViewDelegate
  • UITableViewDataSource

我熟悉MVC模式,我从Apple Developer Docs中了解到,他们的框架使用委托来“专门化”类而不进行子类化,数据源类定义了如何将模型中的数据映射到视图上(请如果我错了,请纠正我。)

当我通过选择新文件...>创建TableViewController时Cocoa Touch Class> UIViewController子类(检查UITableViewController子类)我很困惑地看到模板包含UITableViewDelegate和UITableViewDataSource中的所有函数,而没有在头文件中指定TableViewController实现这些协议。 UITableViewController的文档说它“符合UITableViewDelegate和UITableViewDataSource”。这是否意味着它实现了这些协议?

所以我的问题是:UITableViewController仅仅是一个结合了UITableViewDelegate和UITableViewDataSource的便利类,还是我错过了什么?如果我提供单独的UITableViewDelegate和UITableViewDataSource,我是否需要UITableViewController?

谢谢!

1 个答案:

答案 0 :(得分:1)

UITableViewController是一个预先配置了UITableView的控制器,它本身被设置为表视图的委托和数据源。

所以,是的,这几乎是一个便利课。

您不需要使用它,特别是如果您提供自己的数据源和委托。