표시 경고 팝업과 같은 일부 UI 관련 기능이 있거나 화면 중간에 활동 표시기를 표시하거나 사용자 지정 메시지가있는 UIView 화면에 애니메이션 표시를 표시합니다.
여러 번의 viewController (VC1, VC2는이 경우)에서 사용하고 싶으므로 자신을 반복하지 마십시오.
처음에는 두 VC에서 작동하는 다음 코드가 해당 기능을 수행하는 BaseVC에서 상속받습니다.
VC1은 tablelView가 포함 된 UIViewController이고 VC2는 collectionView가 포함 된 UIViewController입니다. 몇 가지 이유 때문에 그러나 보기 컨트롤러 간의 공유 UI 기능
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
}
}
}
이것은 UIViewController 클래스 인이 BaseVC에서 더 이상 볼 수 없다는 것을 의미합니다.
두 VC가 그 기능을 계속 수행 할 수 있도록 어떻게 만들 수 있습니까?
좋은 대답을 , 그러나'ActivityIndicatorDisplaying Self : UIViewController'는'UIView'가 여전히 작동 함을 보여줍니다. –
'.addSubview'가 뷰 컨트롤러의'.view' 속성에서 호출되므로 작동하지 않습니다. UIView와 UIViewController 양쪽 모두와 함께 동작 시키려면'Self : UIViewController'를 제거하고 다음과 같이 프로토콜에서 다른 속성을 정의해야합니다 :'var view : UIView {get}' – ozgur
이 솔루션이 더 많은 투표를해야하는 이유는 무엇입니까? 제이슨 한 명 한 명? 그의 방법은 모든 VC에 여분의 플래그를 도입하지 않습니다. – user125972