11import frameCommon = require( "ui/frame/frame-common" ) ;
22import definition = require( "ui/frame" ) ;
33import trace = require( "trace" ) ;
4- import imageSource = require( "image-source" ) ;
54import pages = require( "ui/page" ) ;
65import enums = require( "ui/enums" ) ;
76import utils = require( "utils/utils" ) ;
@@ -165,39 +164,6 @@ export class Frame extends frameCommon.Frame {
165164 var navigationBar = this . _ios . controller . navigationBar ;
166165 return ( navigationBar && ! this . _ios . controller . navigationBarHidden ) ? navigationBar . frame . size . height : 0 ;
167166 }
168-
169- public _invalidateOptionsMenu ( ) {
170- this . populateMenuItems ( this . currentPage ) ;
171- }
172-
173- populateMenuItems ( page : pages . Page ) {
174- var items = page . optionsMenu . getItems ( ) ;
175-
176- var navigationItem : UINavigationItem = ( < UIViewController > page . ios ) . navigationItem ;
177- var array : NSMutableArray = items . length > 0 ? NSMutableArray . new ( ) : null ;
178-
179- for ( var i = 0 ; i < items . length ; i ++ ) {
180- var item = items [ i ] ;
181- var tapHandler = TapBarItemHandlerImpl . new ( ) . initWithOwner ( item ) ;
182- // associate handler with menuItem or it will get collected by JSC.
183- ( < any > item ) . handler = tapHandler ;
184-
185- var barButtonItem : UIBarButtonItem ;
186- if ( item . icon ) {
187- var img = imageSource . fromResource ( item . icon ) ;
188- barButtonItem = UIBarButtonItem . alloc ( ) . initWithImageStyleTargetAction ( img . ios , UIBarButtonItemStyle . UIBarButtonItemStylePlain , tapHandler , "tap" ) ;
189- }
190- else {
191- barButtonItem = UIBarButtonItem . alloc ( ) . initWithTitleStyleTargetAction ( item . text , UIBarButtonItemStyle . UIBarButtonItemStylePlain , tapHandler , "tap" ) ;
192- }
193-
194- array . addObject ( barButtonItem ) ;
195- }
196-
197- if ( array ) {
198- navigationItem . setRightBarButtonItemsAnimated ( array , true ) ;
199- }
200- }
201167}
202168
203169class UINavigationControllerImpl extends UINavigationController implements UINavigationControllerDelegate {
@@ -240,7 +206,7 @@ class UINavigationControllerImpl extends UINavigationController implements UINav
240206 }
241207
242208 frame . _addView ( newPage ) ;
243- frame . populateMenuItems ( newPage ) ;
209+ newPage . _invalidateOptionsMenu ( ) ;
244210 }
245211 else if ( newPage . parent !== frame ) {
246212 throw new Error ( "Page is already shown on another frame." ) ;
@@ -322,24 +288,3 @@ class iOSFrame implements definition.iOSFrame {
322288 this . _navBarVisibility = value ;
323289 }
324290}
325-
326- class TapBarItemHandlerImpl extends NSObject {
327- static new ( ) : TapBarItemHandlerImpl {
328- return < TapBarItemHandlerImpl > super . new ( ) ;
329- }
330-
331- private _owner : pages . MenuItem ;
332-
333- public initWithOwner ( owner : pages . MenuItem ) : TapBarItemHandlerImpl {
334- this . _owner = owner ;
335- return this ;
336- }
337-
338- public tap ( args ) {
339- this . _owner . _raiseTap ( ) ;
340- }
341-
342- public static ObjCExposedMethods = {
343- "tap" : { returns : interop . types . void , params : [ interop . types . id ] }
344- } ;
345- }
0 commit comments