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

Why is this Javascript much *slower* than its jQuery equivalent?

I have a HTML list of about 500 items and a "filter" box above it. I started by using jQuery to filter the list when I typed a letter (timing code added later): $('#filter').keyup( function() { var jqStart = (new Date).getTime(); var search = $(this).val().toLowerCase(); var $list = $('ul.ablist > li'); $list.each( function() { if ( $(this).text().toLowerCase().indexOf(search) === -1 ) $(this).hide(); else $(this).show(); } ); console.log('Time: ' + ((new Date).getTime() - jqStart)); } ); However, there was a couple of seconds delay after typing each letter (particularly the first letter). So I thought it may be slightly quicker if I used plain Javascript (I read recently that jQuery's each function is particularly slow). Here's my JS equivalent: document.getElementById('filter').addEventListener( 'keyup', function () { var jsStart = (new Date).getTime()...

Is it possible to have IF statement in an Echo statement in PHP

Thanks in advance. I did look at the other questions/answers that were similar and didn't find exactly what I was looking for. I'm trying to do this, am I on the right path? echo " <div id='tabs-".$match."'> <textarea id='".$match."' name='".$match."'>". if ($COLUMN_NAME === $match) { echo $FIELD_WITH_COLUMN_NAME; } else { } ."</textarea> <script type='text/javascript'> CKEDITOR.replace( '".$match."' ); </script> </div>"; I am getting the following error message in the browser: Parse error: syntax error, unexpected T_IF Please let me know if this is the right way to go about nesting an IF statement inside an echo. Thank you.