我試圖執行一個函數,每次應用程序加載一個新的ViewController(過渡到不同的視圖)。爲了避免在每個ViewController中調用這個函數(其中大約有10個以上需要添加),我希望通過添加某種觀察者來在AppDelegate中執行此操作。這可能嗎?或者可以用UIViewController擴展的方式完成嗎?檢測從AppDelegate UIViewController更改
-1
A
回答
0
或者你也可以繼承的事件的UINavigationController和後通知你有興趣:
class NotificationNavigationController: UINavigationController {
override func pushViewController(_ viewController: UIViewController, animated: Bool) {
NotificationCenter.default.post(name: Notification.Name(rawValue: "NavigationControllerWillPush"), object: nil)
super.pushViewController(viewController, animated: animated)
}
override func popViewController(animated: Bool) -> UIViewController? {
NotificationCenter.default.post(name: Notification.Name(rawValue: "NavigationControllerWillPop"), object: nil)
return super.popViewController(animated: animated)
}
}
然後在您的應用程序委託你可以觀察到這些通知:
NotificationCenter.default.addObserver(forName: Notification.Name(rawValue: "NavigationControllerWillPush"), object: nil, queue: OperationQueue.main) {
notification in
// handle push
}
NotificationCenter.default.addObserver(forName: Notification.Name(rawValue: "NavigationControllerWillPop"), object: nil, queue: OperationQueue.main) {
notification in
// handle pop
}
1
忘記AppDelegate,觀察者或擴展,使用Inheritance。
所有你的UIViewControllers應該擴展一個MainViewController基類,你可以把你的邏輯放在基類的viewDidLoad方法(或viewDidAppear)中。
記住調用時調用超類方法。
相關問題
- 1. 從Storyboard實例化UIViewController時無法從AppDelegate更改UI
- 2. 從AppDelegate更改UI
- 3. 從推送通知的ios上的AppDelegate更改UIViewController
- 4. 從UIViewController導航到Appdelegate
- 5. 從appdelegate設置UIViewController委託
- 6. 如何從appDelegate推UIViewController
- 7. 從AppDelegate更改UIButtonOutlet圖片
- 8. 的AppDelegate到的UIViewController
- 9. AppDelegate中的方向檢測
- 10. 從UIViewController更改爲UITableViewController
- 11. 從UIViewController更改爲ViewController
- 12. 從UITableViewCell更改UIViewController標題
- 13. 如何從AppDelegate實例化UIViewController?
- 14. 將數據從UIViewController傳遞到AppDelegate
- 15. iPhone SDK - 通過UIViewController從AppDelegate顯示UIView
- 16. 從AppDelegate注入對象到UIViewController
- 17. 調用從AppDelegate導入AppDelegate的UIViewController方法
- 18. 在AppDelegate中檢測抖動
- 19. 來自AppDelegate的UIViewController方法
- 20. iOS更改UIViewController
- 21. 從SDK中更改appdelegate方法
- 22. 檢測域更改?
- 23. 檢測更改jQuery
- 24. 從appDelegate更新UILabel
- 25. 更改UITableViewController到UIViewController
- 26. iOS - UIViewcontroller檢測旋轉?
- 27. 檢測最後視圖UIViewController
- 28. 如何從UIViewController更改Xib的標籤
- 29. 從UITableView(WEPopover)UIViewController的觸發器更改
- 30. Tablesorter檢測更改或更改?
這是否意味着我將不得不子類每個ViewController? – Vege
是的,你應該。代碼集中通常是避免重複代碼並編寫更多可伸縮程序的正確方法 – lubilis