Хранить значения стека навигации в словаре iOS - PullRequest
0 голосов
/ 15 мая 2019

Мне нужно отследить поток навигации пользователей и сохранить его в Dictionary, каждый раз, когда пользователь посещает любой экран в моем приложении. Я вижу стек навигации в выводе моей консоли, используя код

navigationController? .ViewControllers

Но не знаю, как сохранить это в словаре.

Пожалуйста, помогите

Ответы [ 3 ]

0 голосов
/ 15 мая 2019

Надеюсь, это поможет получить viewcontroller. Следуйте этому и сохраните в глобальный словарь, используя singleton.

Глобальная функция:

public func storeCurrentViewController(_ currentFile: String = #file)
{
    let className = currentFile.components(separatedBy: "/").last ?? ""
    let classNameArr = className.components(separatedBy: ".")
    print("\n\n--> CurrentViewController:  \(classNameArr[0])")

    //*********** Use dictionary and do your logics

}

Функциональный вызов:

override func viewDidLoad() {
    super.viewDidLoad()
    storeCurrentViewController()
}
0 голосов
/ 15 мая 2019
NSArray *viewControllers = [[self navigationController] viewControllers];
                for( int i=0;i<[viewControllers count];i++){
                    id obj=[viewControllers objectAtIndex:i];    
                    NSLog(@"%@",[obj classNameForClass:[obj class]]);
}

Не уверен, что это работает. Дай попробовать ...

0 голосов
/ 15 мая 2019

Вы можете получить имена всех UIViewControllers на navigationStack, используя

let controllers = self.navigationController?.viewControllers.compactMap({ String(describing: type(of: $0.self)) }).joined(separator: "_")
print(controllers) //Output: "VC1_VC2_VC3"

. Вы можете сохранить строку controllers в своем файле.

...