While navigating from one screen to another screen(Instance/SubScreen of TabBarController), app is getting crashed and throwing error.
Thread 1: "-[UINavigationController selectedIndex]: unrecognized selector sent to instance 0x105870800"
UINavigationController *nav_1 = [UIApplication sharedApplication].keyWindow.rootViewController;
UITabBarController *tab = (TabbarController*)[UIApplication sharedApplication].keyWindow.rootViewController;
NSInteger sel_idx = tab.selectedIndex; //App Crashing here with error:- Thread 1: "-[UINavigationController selectedIndex]: unrecognized selector sent to instance 0x105870800"
UINavigationController *nav = [tab.viewControllers objectAtIndex:sel_idx];
- Before it's working fine when screen redirecting with below code, but facing error of
Multiple Navigation Stack, which caused unwanted crashes and app freezing issue
if ((UserDefaults.standard.value(forKey: "isUserSignIn") as? Bool) == true)
{
NSLog("if called tabBarController")
self.window?.rootViewController = storyBoard.instantiateViewController(withIdentifier: "tabBarController")
}
else
{
self.window?.rootViewController = storyBoard.instantiateViewController(withIdentifier: "ProfileNavController")
}
- Now I've changed code as below, bcz I'm facing issue of
Multiple Navigation Stack. So after changing to below codeMultiple Navigation Stackissue has been resolved but facing mentioned error
if ((UserDefaults.standard.value(forKey: "isUserSignIn") as? Bool) == true)
{
NSLog("if called tabBarController")
let tabBar = storyBoard.instantiateViewController(withIdentifier: "tabBarController")
nav = UINavigationController(rootViewController: tabBar)
self.window?.rootViewController = nav
}
else
{
NSLog("else called LoginViewController")
let login = storyBoard.instantiateViewController(withIdentifier: "LoginViewController")
nav = UINavigationController(rootViewController: login)
self.window?.rootViewController = nav
}
- Crashing with error
CodePudding user response:
To access the tab after you changed the root to a navigation you need
UINavigationController *nav_1 = [UIApplication sharedApplication].keyWindow.rootViewController;
UITabBarController *tab = [nav_1.viewControllers objectAtIndex:0]

