【问题标题】:Can I subclass a custom view controller我可以子类化自定义视图控制器吗
【发布时间】:2014-11-08 04:36:06
【问题描述】:

我创建了一个名为 CalendarTableViewController.h 和 .m 的 UITableViewController 子类。它显示指定范围内的事件列表(例如 2014 年的所有事件)。我想要另外两个视图控制器(月和日)并将它们堆叠在第一个视图控制器之上。

因为所有三个视图控制器都具有相似的属性和行为,所以我想对我的自定义视图控制器进行子类化。这可能吗?

我已经用 Xcode 开发了大约一年,所以我可能遗漏了一些简单得愚蠢的东西。但是,我只知道如何继承 UITableViewController。您如何子类化您自己的自定义视图控制器?

如果您能分享您的智慧,我将不胜感激。 耀西

【问题讨论】:

  • 当然可以。通过“新建文件”菜单项添加新控制器时,只需将 CalendarTableViewController 放在“子类”字段中即可。

标签: ios objective-c subclassing


【解决方案1】:

在面向对象编程的世界中,对象被分类为分层组。与其对不同的等级级别(如属或种)使用不同的术语,不如将对象简单地组织成类。就像人类作为家庭成员继承某些特征一样,可以将类设置为从父类继承功能。

当一个类从另一个类继承时,子类继承父类定义的所有行为和属性。它也有机会定义自己的附加行为和属性,或者覆盖父级的行为。

长话短说,是的,在这种情况下,您可以并且应该创建子类。这就是您在 .h 文件中的 Objective-c 中的操作方式(在您的新类中)

  @interface MySecondController : CalendarTableViewController {
  }

在斯威夫特中

  class MySecondController: CalendarTableViewController {
      // subclass definition goes here
  }

希望对你有帮助

【讨论】:

  • 我发现了我可能做错了什么。我手动将 CalendarTableViewController 重命名为 MasterTableViewController,并试图使 MySecondController 成为 MasterTableViewController 的子级。但是,当我去 File > New > File > Cocoa Touch Class 时,它不会让我创建 MasterTableViewController 的子类。 Xcode 仍然可以识别旧名称 (CalendarTableViewController) 并成功创建子类。我在重命名父视图控制器时做错了什么?
  • 没关系。我得到了它。我在一些.h 文件@interface 声明中留下了“CalendarTableViewController”。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-16
  • 1970-01-01
  • 1970-01-01
  • 2020-04-30
  • 2016-09-27
相关资源
最近更新 更多