ios - In Swift how do I set a delegate by restorationIdentifier in the tabBarController when there are more than 5 tabs? -
for first 4 tabs use restorationidentifier set proper delegate each viewcontroller. in case of 5th , 6th tabs, restorationidentifier $morenavigationcontroller$ because don't jump directly viewcontroller.
i didn't state question deserved down-votes got. took me far longer expected found answer: didselectviewcontroller not getting called when in "more" section.
but since that's written in obj-c thought i'd share swift version wrote.
func tabbarcontroller(tabbarcontroller: uitabbarcontroller, didselectviewcontroller viewcontroller: uiviewcontroller) { // if user hits "more" tab first time, need set tabcontroller delegate more's navigationcontroller if (viewcontroller == tabbarcontroller.morenavigationcontroller && tabbarcontroller.morenavigationcontroller.delegate == nil) { tabbarcontroller.morenavigationcontroller.delegate = self } setupdelegates(viewcontroller) } // called when user chooses list “more” func navigationcontroller(navigationcontroller: uinavigationcontroller, didshowviewcontroller viewcontroller: uiviewcontroller, animated: bool) { setupdelegates(viewcontroller) } // manages setting view controllers delegates or whatever when selected func setupdelegates(viewcontroller: uiviewcontroller) { if viewcontroller.restorationidentifier == “foo” { let foocontroller = viewcontroller as? foocontroller foocontroller?.delegate = datamanager } else if viewcontroller.restorationidentifier == “bar” { let barcontroller = viewcontroller as? barcontroller barcontroller?.delegate = datamanager } }
Comments
Post a Comment