UITableViewController与UIViewController中使用UITableView

本文探讨了UITableViewController和UIViewController在iOS应用开发中的不同用途。UITableViewController提供了内置的TableView属性和自动实现的代理方法,简化了TableView的管理和刷新操作。然而,UIViewController提供了更大的灵活性,适用于需要额外功能的场景。文章还讨论了在需要使用UIRefreshControl时,从UIViewController转换到UITableViewController的必要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

之前使用TableView的时候都是继承UIViewController,然后继承两个delegate,如下面的代码。

@interface SomeViewController : UIViewController <UITableViewDelegate, UITableViewDataSource>

这篇文章《如何使用UITableView》讲述了我怎样使用TableView。最近想使用iOS6的 UIRefreshControl,不幸的是这个UIRefreshControl 只能使用在UITableViewController里面,不能支持UIViewController。Thanks Apple, make things more difficult. 因此我不对不把UIViewController改成UITableViewController。

这篇文章讲述了两者的区别。

http://www.iosdevnotes.com/tag/uitableviewcontroller/

UIViewController vs UITableViewController

The class that implements the delegate methods is almost always the view controller that owns the table view. What should that class be? Most view controllers are usually subclasses of UIViewController, but iOS also provides a UITableViewController.

UITableViewController only provides a few features on top of UIViewController:

  • UITableViewController has a tableView property built-in that points to its table view.
  • UITableViewController will automatically make itself the data source and delegate, unless you specifically change it.
  • The UITableViewController will reload the table view’s data the first time it’s loaded. It will also clear any selected rows whenever the table view is displayed.
  • After the table view appears, it will flash the table view’s scroll indicators. This is a hint to the user that there’s more data than they currently see on the screen.
  • If there’s a navigation bar with an Edit/Done button, the UITableViewController will hook it up to toggle the edit mode of the table view.

Basically, it saves a little bit of time by automatically implementing some common and expected code. If you don’t want any of this behavior, you can always do it yourself within a UIViewController. Just remember to manually implement the steps listed above yourself, if you still want them. You might have seen apps where you select a row from a table, go to a new screen, and when you come back the row is still highlighted. This is usually a sign that someone used a UIViewController with their table view and forgot to clear the selection :) .

The most common times when I don’t use a UITableViewController in my apps is usually when the view controller needs extra functionality beyond just a table view. Perhaps I want the table view nested inside another view, for example. Usually though, you can use a UITableViewController, as we do in the example below.

A helpful hint: if you’re creating a new view controller though Xcode (like under File -> New -> New File…), you can select “UIViewController subclass”, and then on the next screen, choose “UITableViewController” from the “Subclass of” drop down.

 

 

看起来UITableViewController更加方便,但是我喜欢UIViewController 的灵活性。对于使用UIRefreshControl的需求,我也别无选择,不得不改成UITableViewController。把Storyboard了页面重新做一遍,重新写ViewController类。

转载于:https://www.cnblogs.com/procoder/archive/2013/01/24/UITableViewController_vs_UIViewController_with_UITableView.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值