你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發綜合 >> iOS --- 在NSObject子類的執行代碼中實現UIViewController的跳轉

iOS --- 在NSObject子類的執行代碼中實現UIViewController的跳轉

編輯:IOS開發綜合

在iOS開發中, 要實現UIViewController之間的跳轉,通過navigationController的pushViewController或者UIViewController自身的presentViewController的方式即可。但要求是從一個UIViewController跳到另外一個UIViewController中。如果要從NSObject子類的執行代碼中做跳轉至UIViewController的操作, 要如何實現呢?
首先, 說明下為何會有這樣的需求, 即: UICollectionView -> NSObjectSubclass -> UIViewController:
設置UICollectionView的datasource和delegate為一個NSObject的子類, 用於處理所有跟UICollectionView的datasource和delegate相關的邏輯關系. 那麼在該類的執行代碼中可能有調轉到另一個UIViewController的使用場景. 此時, 不能使用pushViewController, 因self根本就沒有navigationController屬性;也不能使用presentViewController, self不是UIViewController的子類。
解決方式可以考慮一下兩種:

delegate的方式

delegate是iOS中非常常見的方法. 設置UICollectionView的xxxDelegate為該NSObjectSubclass, 實現其中的方法xxxDelegateMethod1, 然後在NSObjectSubclass的執行代碼中調用xxxDelegate的xxxDelegateMethod1方法. 該方法的實現在UICollectionView(包含navigationController屬性)中, 因此在其中可以實現UIViewController之間的正常跳轉.

rootViewController

在NSObjectSubclass的執行代碼中, 先獲取當前的rootViewController, 在做UIViewController之間的跳轉:

UIViewController *rootViewController = [[[UIApplication sharedApplication] keyWindow] rootViewController];
[rootViewController presentViewController:filterCourseViewController animated:NO completion:nil];

最終, 要實現UIViewController之間的跳轉, pushViewController或presentViewController的執行代碼所處的類self必須要有navigationController屬性, 或者必須是UIViewController的子類.

 

  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved