Skip to main content

How to implement UINavigationControllerDelegate to call web service for data driven app



In my app, I have 5 navigation controllers. One of the navigation controllers displays 3 view controllers sharing the same data (from a Sqlite database). The only difference is that they present the data in a different way :





  • ViewController 1 = recipes sorted by countries



  • ViewController 2 = recipes sorted by vegetables



  • ViewController 1 = recipes sorted by wines to drink with







The Sqlite database is fed with a web-service. As new recipes may be added anytime, I need to refresh the database anytime the application becomes active. And as the application can become active on any of the view controller (depending on the one selected when the app went to background) I have to write the refresh code in the 3 view controller implementation files.





I think this method sucks because the web-service is called when the user switch between the navigation controllers. This create frequent and useless traffic and database updates. I would prefer to do the job only one time per application use (active/background). I was thinking of UINavigationControllerDelegate. This way I will do the refresh only once, when the application becomes active, and whatever the navigation controller is.





My questions are :





  • Do you think this is a good method or would you suggest another ?



  • Do you know how to implement the UINavigationControllerDelegate in this case ?



  • Is this possible only in the App Delegate or can I do it outside ?







Thanks in advance for any help.


Comments

  1. You're on the right track. I think you should create a separate class that does the refresh, and you should call that class from your appDelegate's

    applicationDidBecomeActive:


    method. It really should have nothing to do with navigation conrollers.

    ReplyDelete

Post a Comment

Popular posts from this blog

Slow Android emulator

I have a 2.67 GHz Celeron processor, 1.21 GB of RAM on a x86 Windows XP Professional machine. My understanding is that the Android emulator should start fairly quickly on such a machine, but for me it does not. I have followed all instructions in setting up the IDE, SDKs, JDKs and such and have had some success in staring the emulator quickly but is very particulary. How can I, if possible, fix this problem?