【发布时间】:2016-09-30 01:56:13
【问题描述】:
我有一些与 UI 相关的功能,例如显示警告弹出窗口,在屏幕中间显示活动指示器,或在屏幕上显示带有自定义消息的动画 UIView。
我想在多个 viewControllers(VC1 , 和 VC2 在这种情况下),所以我不重复自己。
最初,我有以下代码,这两个 VC 都继承自一个负责这些功能的 BaseVC。
VC1 是一个嵌入了 tablelView 的 UIViewController,VC2 是一个嵌入了 collectionView 的 UIViewController。
class VC1: BaseVC {
func viewDidAppear(animated: Bool) {
activityIndicatorBegin()
}
func btnPressed() {
activityIndicatorEnd()
}
}
class VC2: BaseVC {
func viewDidAppear(animated: Bool) {
activityIndicatorBegin()
}
func btnPressed() {
activityIndicatorEnd()
}
}
class BaseVC: UIViewController {
var activityIndicator: UIActivityIndicatorView = UIActivityIndicatorView()
var isCustomViewOnScreen = false
func activityIndicatorBegin() {
if activityIndicator.isAnimating() == false {
activityIndicator = UIActivityIndicatorView(frame: CGRectMake(0,0,20,20))
activityIndicator.center = view.center
activityIndicator.hidesWhenStopped = true
activityIndicator.activityIndicatorViewStyle = UIActivityIndicatorViewStyle.WhiteLarge
activityIndicator.color = UIColor.blackColor()
view.addSubview(activityIndicator)
activityIndicator.startAnimating()
}
}
func activityIndicatorEnd() {
if activityIndicator.isAnimating() == true {
activityIndicator.stopAnimating()
activityIndicator.removeFromSuperview()
}
}
func animateACustomViewOnScreen() {
if isCustomViewOnScreen == false {
// Some animation code
}
}
func removeCustomView() {
if isCustomViewOnScreen == true {
// Some removal code
}
}
}
但是,由于某些原因,我决定将 VC1 直接用于 UITableViewController 和来自 UICollectionViewController 的 VC2。
这意味着它们不再可以从属于 UIViewController 类的 BaseVC 中获取。
我怎样才能使两个 VC 仍然可以达到这些功能?
【问题讨论】: