iOS基本视图控制器的组合与继承

时间:2015-08-18 21:37:09

标签: ios objective-c inheritance

一般来说,我听说使用构图比继承更好,但我并不总是清楚如何做到这一点。我想创建一些在我的所有视图控制器中都很常见的功能(我想监听NSNotification,如果接收到notif则调用方法)。

我的想法是创建一个每个UIViewController扩展的BaseViewController。除了遗产之外,我很想以其他方式解决这个问题

  • 一些视图控制器扩展了UIViewController,有些扩展了UITableViewController
  • 如果我在swift中编写它,objc视图控制器不能将其子类化
  • 合并继承的正常原因 - 更容易理解行为

我的问题是 - 如何在不复制并将大量代码粘贴到每个viewcontroller的情况下完成此操作?我显然可以在每个视图控制器viewDidLoad方法中插入一行,添加一个监听器,并进入每个视图控制器delloc,但我真的宁愿避免这种情况。是否有其他技术可以使这个更清洁?

2 个答案:

答案 0 :(得分:0)

在Swift 2.0中,您可以使用协议和默认方法实现。但在这种情况下,继承是我的最佳方法。

答案 1 :(得分:-1)

据我所知,通过使用 Singleton Class 来实现一些在所有ViewControllers中都很常见的功能会更好。

创建一个包含Singleton类的简单swift文件,并在其中实现您想要在任何地方访问的常用函数。为该类创建一个共享实例,通过使用此共享实例,您可以调用应用程序的任何ViewController中的任何函数。这样您就可以重复使用代码而无需复制粘贴。