Search code examples
sencha-touchsencha-touch-2

Show & Hide events for a Sencha Touch navigation view


I'd like to be able to hide and show certain buttons in a navigation view bar when a view is push and popped onto the view stack. Shame I can't control that from the view config itself (but I'll save that moan for another time).

I wanted to know which events I should be using when a view is push/popped on a navigation view. The docs sometimes lie and I've been told many times not too trust it, so I'm not! Come on Sencha, Microsoft wouldn't get away with this! So Any ideas? When I try to print out all the events for a view I get very unreliable behaviour:

What I've found: When I push a view I get:

initialize
hide
show

When I pop a view I get:

hide
show

What the flip is going on?!?

The code to show events happening:

 control: {           
            myViewRef: {                
                initialize: function() { console.log("initialize") },
                activated: function() { console.log("activated") },
                deactivated: function() { console.log("deactivated") },
                painted: function() { console.log("painted") },
                show: function() { console.log("show") },
                hide: function() { console.log("hide") }
            },
  }

The code to actually push/pop a view:

 onInBoxListViewItemTap: function(scope, index, item, record) {
        console.log("onInBoxListViewItemTap");

        var detailsView = this.getEnquiryDetailsViewRef();

        // push view
        var navview = this.getMyInboxViewRef();
        navview.push(detailsView);
    }

Does this stuff actually work properly i.e. Are there concrete events which are guaranteed to fire when a view is pushed and popped?


Solution

  • First of all - you have a typo in your code. You need to reference activate and deactivate not activate_d and deactivate_d.

    Second, I would try to subscribe to push and pop events of navigation view and see if it would get you what you want.