Cas*_*ash 4 iphone cocoa-touch uitableview
我有一个包含a UITableView和a 的视图,UILabel据我所知,它完美无缺.我真的不想管理UIView和UITableView使用相同的控制器UITableViewController处理大量的内务管理和根据文档:
如果要管理的视图是一个复合视图,其中表视图是多个子视图之一,则必须使用UIViewController的自定义子类来管理表视图(和其他视图).不要使用UITableViewController对象,因为此控制器类调整表视图的大小以填充导航栏和选项卡栏之间的屏幕(如果存在).
为什么Apple警告不要使用它,如果我忽略这个警告将会发生什么?
更新:最初我引用Apple文档中的以下内容:
您不应该使用视图控制器来管理仅填充其窗口一部分的视图 - 即,只是应用程序内容矩形定义的区域的一部分.如果您希望有一个由几个较小视图组成的界面,请将它们全部嵌入到单个根视图中,并使用视图控制器管理该视图.
虽然这个问题可能与UITableViewController设计为全屏的原因有关,但问题并不完全相同.
每个屏幕仅使用一个视图控制器的主要实际原因是因为这是管理导航的唯一方法.
例如,假设您的屏幕具有两个单独的视图控制器,并使用导航控制器加载它.你推动了哪两个视图控制器,你如何加载和引用第二个?(更不用说同时协调两个独立控制器的开销.)
我不认为使用单个自定义控制器是一个很麻烦的事情.
请记住,TableviewDataSource和TableViewDelegate不需要在实际的控制器中.Apple模板只是为了方便起见.您可以将实现这两种协议的方法放在一个类中,也可以将它们分别放在自己的类中.然后,您只需将它们与自定义控制器中的表链接起来即可.这样,所有自定义控制器所要做的就是管理tableview本身的框架.所有配置和数据管理都将在独立的自包含对象中.如果您需要来自其他UI元素的数据,自定义控件可以轻松地向它们发送消息.
这种灵活性,定制和封装是委托设计模式首先被使用的原因.您可以自定义任何东西,而无需创建一个可以完成所有任务的怪物类.相反,你只需弹出一个委托模块然后去.
Edit01:对评论的回应
如果我正确理解你的布局,你的问题是UITableViewController是硬连线设置表来填充可用的视图.大多数情况下,tableview是顶视图本身并且有效.UITableViewController的主要功能是定位表,因此如果您使用的是非标准布局,则不需要它.您可以使用通用视图控制器并让nib设置表的框架(或以编程方式执行).就像我说的那样,很容易认为委托和数据源方法必须在控制器中,但它们不是.你应该完全摆脱tableViewController,因为它在你的特定设计中没有用处.
| 归档时间: |
|
| 查看次数: |
1656 次 |
| 最近记录: |