【问题标题】:subclassing from multiple class library in ios swift从ios swift中的多个类库子类化
【发布时间】:2017-09-25 09:29:33
【问题描述】:

我有一个要从 2 个库继承的 ViewController,

例如:

class ViewController : BaseViewController, ButtonBarPagerTabStripViewController{
}

我知道 swift 不会让我这样做,那么从这两个类继承的最佳方法是什么。

【问题讨论】:

  • 多级继承!
  • 如果你使用github.com/xmartlabs/XLPagerTabStrip就不需要继承
  • @IOSSingh 那么没有继承怎么办?
  • 我感觉到XY-Question。你应该解释你想要达到什么,而不是如何。
  • 您正在解释您想要使用某个工具(从 2 个超类继承)。相反,您应该通过使用这个不存在的工具来解释您想要实现的目标。对于您当前的问题(从两个类继承的最佳方法是什么),唯一有效的答案可能是:您不能。

标签: ios swift inheritance subclassing xlpagertabstrip


【解决方案1】:

Swift 不支持多类继承,你可以通过多级继承实现,在你的情况下

  1. 子类 BaseViewController 来自 ButtonBarPagerTabStripViewController 基类声明

    class BaseViewController : ButtonBarPagerTabStripViewController { //Body }

  2. 然后从 BaseViewController 进一步子类您的 ViewController

    class ViewController : BaseViewController { //Body }

【讨论】:

  • 确实,但是根据需要我们可以实现,而且我认为如果我们尝试在 Swift 上进行多重继承,那么我们必须在协议上工作,以便可以解决一些常见的事情,但在基础上对于这里的问题,我们试图从两个库(或简单的类)中提供这两种功能(我想)。所以多级继承是这里唯一的选择。
  • 这里有一个疑问。考虑一个场景:
  • 这里有一个疑问。考虑一个场景:如果我的“LoginViewController”继承自“BaseViewController”并且我不想在我的新“LoginViewController”中使用“ButtonBarPagerTabStripViewController”的任何方法,那么我们需要做什么。我的问题是“ButtonBarPagerTabStripViewController”迫使我实现它的数据源,在我的情况下不需要。我所做的是创建了一个名为“BaseNewViewController”的新文件并复制了“BaseViewController”的所有代码。我说的对吗?
  • 嗯,这可能是另一种选择。
【解决方案2】:

你必须做多级继承!

class BaseViewController : ButtonBarPagerTabStripViewController{

}

class ViewController : BaseViewController {

}

【讨论】:

  • 我认为如果我自己制作两个简单的类是有意义的。但我认为从两个外部库进行多重继承并不容易。我希望有更简单的答案。
  • 你可以在你的课堂上做到这一点!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-14
  • 2020-01-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多