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