Controllers

So far we’ve used two controller classes (StageController and SceneController) and referred to a third (AppController). All three classes are part of Mojo.Controller namespace. The assistants that we’ve created are associated with their respective controller classes and rely heavily on the methods in those classes.

AppController and the use of stages within an application will be covered in depth in Chapter 10, when we cover notifications and background applications.

Note

It is worth noting that an application has just one application controller object and may optionally have a single application assistant to create and manage stages.

Controllers and Assistants

An application can have multiple stage controller objects, and each stage controller can have a stage assistant. A stage assistant is not an instance of StageController, but is actually a delegate of the controller. The assistant has a controller property set to a reference to the associated controller, which is used to directly call the controller’s methods. The assistant defines its own methods as well.

Each stage controller has a stack of scene controllers. When a scene is pushed, a new scene controller is created and pushed onto the stack. As with the stage, each scene controller has a scene assistant delegate that, after initialization, will have its controller property set to a reference of the scene controller it belongs to.

To illustrate this, let’s go back to our News application. Although it’s quite simple now with only one stage and two scenes, it will, over time, grow to having multiple stages to handle the dashboard along with the card stage that we are currently working in, and there will be at least five scenes. The controller/assistant hierarchy is shown in Figure 2-7.

The News application controller/assistant hierarchy

Figure 2-7. The News application controller/assistant hierarchy

Scene Stack

We’ve already looked at pushScene and popScene, but there are other methods that you will use to manage the scene stack. Refer to the SDK documentation for a complete and up-to-date list of available methods. Some of the more commonly used methods include:

pushScene (sceneArguments)

Pushes a new scene, passing in the optional sceneArguments.

popScene(returnValue)

Removes a scene from the scene stack, passing the returnValue to the newly revealed scene’s activate method.

popScenesTo (targetScene, returnValue)

Removes scenes from the scene stack until the targetScene is reached or there are no scenes remaining on the stack, passing the returnValue to the new scene’s activate method.

swapScene (sceneArguments)

Pops the current scene and simultaneously pushes a new scene without activating or deactivating any underlying scenes, passing in the optional sceneArguments.

topScene()

Returns the topmost scene from this stage.

getScenes()

Returns an array of scene controllers currently on the stack.

activeScene()

Returns the currently active scene from this stage, if any.

sceneArguments and returnValue can be any number of arguments of any type. They are simply passed through to the target scene.

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
3.15.10.64