@@ -355,6 +355,7 @@ public virtual async Task<INavigationResult> NavigateFromAsync(string viewName,
355355 var foundPage = navigationPages . FirstOrDefault ( page => ViewModelLocator . GetNavigationName ( page ) == viewName ) ;
356356 if ( foundPage is null )
357357 {
358+ // Find a page from parents.
358359 var page = currentPage ;
359360 while ( page != null )
360361 {
@@ -366,14 +367,19 @@ public virtual async Task<INavigationResult> NavigateFromAsync(string viewName,
366367 }
367368 else
368369 {
370+ // Insert RemovePageSegment.
369371 var removePageCount = navigationPages . IndexOf ( foundPage ) ;
370372
371- // Insert RemovePageSegment.
372- var routeString = route . ToString ( ) ;
373+ var tempQueue = new Queue < string > ( ) ;
373374 for ( int i = 0 ; i < removePageCount ; i ++ )
374375 {
375- AddToFront ( navigationSegments , RemovePageSegment ) ;
376+ tempQueue . Enqueue ( RemovePageSegment ) ;
377+ }
378+ while ( navigationSegments . Count > 0 )
379+ {
380+ tempQueue . Enqueue ( navigationSegments . Dequeue ( ) ) ;
376381 }
382+ navigationSegments = tempQueue ;
377383 }
378384
379385 await ProcessNavigation ( currentPage , navigationSegments , parameters , null , null ) ;
@@ -392,23 +398,6 @@ public virtual async Task<INavigationResult> NavigateFromAsync(string viewName,
392398 }
393399 }
394400
395- private static void AddToFront < T > ( Queue < T > queue , T element )
396- {
397- var tempQueue = new Queue < T > ( ) ;
398-
399- while ( queue . Count > 0 )
400- {
401- tempQueue . Enqueue ( queue . Dequeue ( ) ) ;
402- }
403-
404- queue . Enqueue ( element ) ;
405-
406- while ( tempQueue . Count > 0 )
407- {
408- queue . Enqueue ( tempQueue . Dequeue ( ) ) ;
409- }
410- }
411-
412401 /// <summary>
413402 /// Selects a Tab of the TabbedPage parent.
414403 /// </summary>
0 commit comments