UPDATE This code appears to do what I want, but I am curious if this is a bad tactic now.
func tabBarController(tabBarController: UITabBarController, didSelectViewController viewController: UIViewController) {
print("pop view controller from tab bar")
if tabBarController.selectedIndex == 2 {
print("appdel detected index 2 tab")
let navCont = viewController as! UINavigationController
navCont.popToRootViewControllerAnimated(true)
}
}
ORIGINAL QUESTION: I have some code that will delete data another tab refers to. I want to make sure that when this code executes in [Edit Record VC] that it will force tab to pop back to the root view, even though the code executes on its own tab:
[ ---------------TAB BAR CONTROLLER ------------------ ]
TAB 0 TAB 1 TAB 2 TAB 3
| | | |
| | | |
[NAV CONTR 0] [NAV CONTR 1] [NAV CONTR 2] [NAV CONTR 3]
| |
| |
[Table VC] [Map VC]
\ /
\ /
\ /
[View Record VC]
|
|
[Edit Record VC]
In the above drawing, when I delete a record in [Edit Record VC], I want to pop Nav Controller 1 and Nav Controller 2 to the very first VC. How can I do this? I have tried every way I can think of and the code just isn't working.
The reason I want to do this is because if NAV CONTR 2 navigates to [Edit Record VC] and deletes the record, [View Record VC] will still be referencing that record, causing it to point to a deleted object. When I try to open the NAV CONTR 2 tab after deletion, it'll cause a crash