【问题标题】:Objective-C / iOS: Subclassing UITableViewController for a custom viewObjective-C / iOS:为自定义视图子类化 UITableViewController
【发布时间】:2012-07-16 15:52:59
【问题描述】:

众所周知,Cocoa Touch 中的表格视图是最漂亮的框架元素之一。为了方便起见,Apple 为我们提供了一个很好的视图控制器类,用于将表格视图的功能封装在 vc 中,UITableViewController

同时,有时我们希望利用表格视图的功能,而不是让它占据整个屏幕。但是,似乎没有办法通过子类化UITableViewController 来做到这一点。相反,我必须连接一个表格视图并手动订阅UITableViewDelegateUITableViewDataSource。如果我尝试子类化 UITableViewController,我的应用程序甚至在将视图显示在屏幕上之前就崩溃了...

我的问题是,有什么我遗漏的吗?当子类化UITableViewController 时,我将我的自定义表格视图连接到UITableViewController 中的tableView 属性。我还有什么需要做的吗?

【问题讨论】:

  • 学习以正常方式进行操作(委托/数据源等)。一旦你完成了它就非常容易并且更加灵活 - 拥有很好的技能。无论如何...您是自己编写的课程还是让 xcode 为您生成?
  • 不要继承 UITableViewController。如果你需要做任何它没有给你的事情(大多数人都是),使用一个常规的 UITableView 并自己定制它。它实际上只用于最简单的情况。

标签: objective-c ios cocoa-touch


【解决方案1】:

UITableViewController 仅比UIViewController 增加了一些小便利:它创建和定位表视图,连接委托和数据源(通常与其自身),将视图控制器editing 属性传递给表,并且当视图出现时,会做一些有用的 UI 位。 (有关详细信息,请参阅 [the docs][1]。)

以上几乎所有内容都是 A)您需要更改以拥有非全屏表格的事情,或 B)您可以在一行或两行中执行的事情,以及 @987654324 @ 只是为了您的方便。对于这种情况,您最好使用自己的 UIViewController 子类。

【讨论】:

    【解决方案2】:

    第 1 步:子类 UIViewController 而不是 UITableViewController

    MyTableViewController : UIViewController <UITableViewDataSource, UITableViewDelegate>
    

    第 2 步:使用界面生成器删除 tableView 和自定义 View

    步骤 3:在 MyTableViewController 头文件中将 tableView 属性声明为 IBOutlet 并将其绑定到界面生成器中的 tableView

    恕我直言,这个过程会给你更多的灵活性。

    【讨论】:

      猜你喜欢
      • 2013-11-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-02
      相关资源
      最近更新 更多