Flex 4.5 provides some pretty slick updates and enhancements, the least of which is the of Mobile components and the ability to slam out some pretty nice mobile apps easily. The first thing I’d like to talk about is a new concept, the ViewNavigator. The ViewNavigator provides some pretty intense functionality such as view management.
What is the ViewNavigator?
The ViewNavigator keeps track of your views. It does this by keeping your views in a list. To add a new view you ‘push’ the view into the list, to remove a view you can ‘pop’ a view out of the list. You can think of it as a stack – first in, last out – and the last view in is the visible view.
Using the ViewNavigator
Using the view navigator is a pretty straight forward process of capturing a user interaction, such as a button click, then pushing the new View into the ViewNavigator’s stack.
For example, let’s pretend that you have a new Flex mobile project. The default view of that project contains a button, that when clicked should display another view named MyNewView. MyNewView also contains a button, that when clicked returns you to the the home view.
Home View Component
In the Home View component all you really need to worry about the the click handler on the button:
The click handler calls the pushView() method on ‘navigator‘, a property available from the View class, passing it the class name of the View that you want to display. We’ll cover getting data into that view and transitions in other posts. The creation of the new View & default transition are all handled by the framework.
The MyNewView View component is basically the same thing:
You call popView() on the ‘navigator‘ property which removes the view from the stack displaying the Home view again.
Here is a quick screen cast of an application using similar code:
[kml_flashembed publishmethod=”static” fversion=”9.0.0″ movie=”http://thekuroko.com/wp-content/uploads/2011/03/ViewNavigatorSample.swf” width=”485″ height=”785″ targetclass=”flashmovie”]
This article has also been posted on the Realeyes website.