【发布时间】:2015-04-29 18:43:41
【问题描述】:
在尝试为 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
【问题讨论】:
-
你能解释一下为什么你想这样做吗?我想我的意思是,因为
viewDidLoad等存在,并且存在正是为了让您覆盖它们,并且因为通常 确实 覆盖它们(因为这正是它们的用途) ,你想要什么更多? -
我想在那里做一些事情,并为我的层次结构中的每个 UIViewController 继续。比方说,我想检查一下,例如,每次我呈现 UIViewController 时是否有连接。这对 UIViewCollectionController 来说是可能的,所以.. 为什么不是 UIViewController?
-
“我想检查一下,例如,每次我呈现一个 UIViewController 时是否有 Connectivity” 让我再强调一下。为什么你需要这样做?每次需要连接时检查是否有连接不是更有意义吗?
-
所以在每个
viewWillAppear中重复的一行代码是脏的?或者,让每个视图控制器成为一个公共超类的子类,为viewWillAppear添加功能也是脏的?那么什么会不是脏的?是否要求修改 UIViewController 自己的viewWillAppear的核心功能?你可以这样做(因为 Objective-C 的运行时是动态的),但对我来说,that 是肮脏的解决方案。 -
不过,您可能还想阅读例如如果你好奇的话:stackoverflow.com/questions/5339276/…
标签: ios swift uiviewcontroller ios8