NSTitlebarAccessoryViewController
에 불확실한 NSProgressIndicator
이 있습니다. 내 응용 프로그램의 다른 위치에서 시작하고 중지 할 수 있기를 원합니다. 때로는보기 컨트롤러 외부에 있습니다.다른 클래스의 액세서리 제목 표시 줄보기 컨트롤러에서 회 전자를 활성화하려면 어떻게합니까?
저는 OS X 개발을 처음 접했습니다. OS X에서 응답기 체인이 iOS보다 사용되는 것으로 들었습니다. 응답 체인을 살펴본 결과 NSResponder
을 통해이 작업을 수행하는 방법을 살펴 보았습니다.하지만 실제로는 이해할 수 없습니다. 아래는 시각화를위한 스크린 샷입니다. 여기
extension EmployeeAPI {
func getAllEmployees(completionHandler: ([FDataSnapshot]) -> Void) {
let employeeRef = ref.childByAppendingPath("employees")
//Somehow start the loading indicator here
employeeRef.observeSingleEventOfType(.Value, withBlock: { snapshot in
//And somehow stop it here
var arr: [FDataSnapshot] = []
for snap in snapshot.children {
if let snap = snap as? FDataSnapshot {
arr.append(snap)
}
}
completionHandler(arr)
})
나는 또한 시작하고 다른 viewControllers을 중지 찾고 : 다음 해요 프로토콜 확장을 통해 전화를 할
class TitleBarAccessoryViewController: NSTitlebarAccessoryViewController, TitleBarActionable {
@IBOutlet var loadingSpinner: NSProgressIndicator!
override func viewDidLoad() {
super.viewDidLoad()
// Do view setup here.
}
func loadingSpinnerShouldBecomeActive(activate: Bool) {
print("Hello")
loadingSpinner.hidden = !activate
if activate {
loadingSpinner.startAnimation(self)
} else {
loadingSpinner.stopAnimation(self)
}
}
}
확장.
NSNotificationCenter는이 경우에 사용하는 것이 일반적입니다. 커스텀 이벤트를 생성하고 TitleBarAccessoriyViewController에서 리스닝을 스폰하십시오. 그러나 이러한 상황이 계속되면 응용 프로그램 아키텍처를 다시 한 번 살펴보고 응용 프로그램 컨트롤러 패턴이나 VIPER 패턴과 같은 것을 사용하여 복잡한 응용 프로그램을 빌드하는 것이 좋습니다. Massive View Controller 아키텍처가 이러한 앱을위한 최상의 선택이 아닐 수도 있습니다. –