在尝试实现 UIViewController 的扩展时,我意识到没有正常的方法,或者不允许覆盖这些函数(即使它们可用于 UICollectionViewController 和 UITableViewController ):
extension UIViewController{
public override func viewWillAppear(){
super.viewWillAppear()
//do some stuff
}
}
我意识到没有正常的方法,或者不允许覆盖这些功能(即使它们可用于 UICollectionViewController 和 UITableViewController ):
-
viewDidLoad
-
viewWillLoad
-
viewWillAppear
-
viewDidAppear
有一些方法可以做到这一点?我希望在那里有一些实现,并在我的应用程序上为每个 UIViewController 工作......所有这些只在一个地方 .
请注意,我不想创建一个新类继承UIViewController,重写这些方法并让我的控制器扩展它 . 这是一个显而易见且最简单的解决方案,但这并不能满足我的目标 . 我在XCode 6.3中使用swift 1.2
1 回答
您要做的是与此代码所做的类似:
您尝试覆盖的4个方法在
UIViewController
中定义,而不是在其超类之一中定义 . 并且您不能覆盖在同一个类中定义的方法 .Update
我可以想出两种不同的方法来解决问题 - 第一种是你不想要的方法(子类化
UIViewController
) .另一个是方法调整 - 我从来没有使用它所以我不值得阅读this article由Nate Cook,其顺便提供了一个替换
viewWillAppear
的例子 .