在实现tableview委托和数据源方法的UIViewController上使用UITableViewController有什么好处吗?

Wya*_*ire 23 uitableview ios

Xcode我创建一个包含tableview的新视图控制器时,我有两个选项

  1. 创建一个新的 UITableViewController
  2. 创建一个UIViewController实现UITableViewDelegateUITableViewDataSource协议的新方法

假设我正确地实现了协议的所有必需和可选方法,是否有任何优势(除了不必编写方法存根)使用UITableViewController?意味着,是否有任何内容(内存管理,缓存等)在UITableViewController类中的幕后实现,使选项1成为比选项2更好的选择?

rma*_*ddy 50

无论您采用哪种方法,都必须编写委托和协议方法.

只有两个,你应该选择使用可能的原因UIViewControllerUITableViewController,当你需要用一个表视图一个视图控制器:

  1. 您需要表视图小于视图控制器的视图.
  2. 您需要向视图控制器添加其他视图,这些视图不会随表视图一起滚动(尽管有办法解决此问题UITableViewController).

以下是UITableViewController您需要复制的所有事情:

  1. 定义并设置UITableView.
  2. 将自身设置为表视图的dataSource和delegate.
  3. 覆盖该setEditing:animated:方法以设置editing表视图的属性.
  4. viewWillAppear:取决于clearsSelectionOnViewWillAppear属性,取消选择方法中的最后一个选定行.
  5. viewDidAppear:方法中闪烁表视图的滚动条.
  6. 连接刷新控件(从iOS 6开始).
  7. 第一次出现时重新加载表格视图.
  8. 调整表格视图contentInset(从iOS 7开始).
  9. 键盘出现时,根据需要滚动表格视图.

  • 谢谢,"需要复制"的清单超越了. (3认同)

Swi*_*ect 13

具有0行代码的键盘优势

UITableViewController当屏幕键盘出现时提供自动滚动,而常规键盘UIViewController则不提供.

UITableViewController可靠地移动内视图编辑过的区域,而不需要使用键盘通知拨弄.自iOS开始以来,它已经这样做了,而键盘通知已经改变,很少提供向后兼容性.

每当视图需要编辑(如登录屏幕)时,请考虑使用UITableViewController并使用完整的0行代码来利用此独特功能.

不幸的是,定期UIViewController采用该UITableViewDelegate协议并不能提供该功能.

的UITableViewController

iPhone OS的曙光到今天.

►在GitHub上找到此解决方案以及有关Swift Recipes的其他详细信息.


Rol*_*asR 5

UITableViewController允许在iOS5上拥有静态表