2012-08-28 35 views
1

根据在Cocoa Touch中大量应用的Model-View-Controller模式,UIViewControllers应该总是处理幕后具体UIView行为的逻辑。UITableView的实现,遵循MVC模式

我很好奇苹果如何实现它的UITableView类,同时保持符合这一理念。特别是因为UITableView依次从UIScrollView和UIView继承。

当你添加一个UITableView到你的一个类中时,它是否有一个UIViewController处理它在后台行为的方式?我知道一个UITableViewDelegate负责告诉表有多少行应该有,等等。但是它的内部工作呢?

回答

1

我会在这里采取一个狂野的镜头,因为我不知道我真的按照你的问题。当您添加UITableView时,您必须拥有与其关联的控制器来控制其处理和呈现的方式。执行UITableViewDelegateUITableViewDatasourceUITableViewControllerUIViewController。如果你不这样做,你无法控制它的功能。

+0

是的,我意识到这一点。我想我要问的是,谁做几何计算,确定如何UITableView实际移动?谁负责实际调用委托方法?等等。这个责任是否属于实际的UITableView类? –

+0

请记住,绘图是在UIView类中的drawRect方法中完成的,所以它是视图本身处理它们的绘制方式。因此,所有的布局代码都是视图,控制器告诉它它将要绘制什么,即数据,以及如何响应用户操作。 – 8vius

+0

这不违反MVC的原则吗?例如,不应该让UIViewController告诉UITable何时调用它的委托UIViewController中的方法? –