Afficher le bouton «Retour au menu» dans la barre de navigation iOS avec Xamarin.Forms

Falko

J'essaie de créer une application multiplateforme à l'aide de C # et Xamarin.Forms. Il contient un menu déroulant implémenté sous la forme d'un fichier MasterDetailPage. Alors que sur Android, il y a un bouton avec l'icône de l'application dans le coin supérieur gauche, qui fait basculer la page coulissante, il n'y a pas un tel élément de barre de navigation sur iOS.

Je l'ai décomposé en l'exemple minimum suivant dérivé du modèle de solution Xamarin «Application vierge (Xamarin.Forms Shared)» et en remplaçant l'implémentation de la App-class:

public class App
{
    static MasterDetailPage MDPage;

    public static Page GetMainPage()
    {
        return new NavigationPage(
            MDPage = new MasterDetailPage {
                Master = new ContentPage {
                    Title = "Master",
                    Content = new StackLayout {
                        Children = { Link("A"), Link("B"), Link("C") }
                    },
                },
                Detail = new ContentPage { Content = new Label { Text = "A" } },
            });
    }

    static Button Link(string name)
    {
        var button = new Button { Text = name };
        button.Clicked += delegate {
            MDPage.Detail = new ContentPage { Content = new Label { Text = name } };
            MDPage.IsPresented = false;
        };
        return button;
    }
}

La solution ainsi que les captures d'écran résultantes peuvent être trouvées sur GitHub .

Mon idée était d'ajouter un tel bouton "menu" ou "retour" dans le code spécifique à iOS en modifiant le window.RootViewController.NavigationController.NavigationBardans la AppDelegateclasse. Mais window.RootViewController.NavigationControllerest null.

Le remplacement du type de retour GetMainPage()par NavigationPageau lieu de Pagen'aide pas.

Je pourrais ajouter des éléments de la barre d'outils via MDPage.ToolbarItems.Add(...), mais ils apparaissent dans le coin supérieur droit .

Falko

J'ai finalement trouvé une solution. Le code nécessite essentiellement deux corrections mineures:

  1. Enveloppez tous les DetailPages dans un NavigationPage, mais pas le MasterDetailPage(voir # 1, # 2 et # 3 ci-dessous).
  2. Ajoutez un Iconau MasterPagequand sur iOS (voir # 4 ci-dessous). N'oubliez pas d'ajouter le PNG (!) Aux ressources iOS.

L'exemple de travail minimum est le suivant:

public static class App
{
    static MasterDetailPage MDPage;

    public static Page GetMainPage()
    {
        return MDPage = new MasterDetailPage { // #1
            Master = new ContentPage {
                Title = "Master",
                Icon = Device.OS == TargetPlatform.iOS ? "menu.png" : null, // #4
                Content = new StackLayout {
                    Children = { Link("A"), Link("B"), Link("C") }
                },
            },
            Detail = new NavigationPage(new ContentPage { Content = new Label { Text = "A" } }), // #2
        };
    }

    static Button Link(string name)
    {
        var button = new Button { Text = name };
        button.Clicked += delegate {
            MDPage.Detail = new NavigationPage(new ContentPage { Content = new Label { Text = name } }); // #3
            MDPage.IsPresented = false;
        };
        return button;
    }
}

Cet article est collecté sur Internet, veuillez indiquer la source lors de la réimpression.

En cas d'infraction, veuillez [email protected] Supprimer.

modifier le
0

laisse moi dire quelques mots

0commentaires
connexionAprès avoir participé à la revue

Articles connexes

Xamarin Forms - Afficher le bouton Annuler dans les éléments de la barre d'outils au lieu de Retour (iOS)

Afficher le bouton de retour dans la barre de navigation

Xamarin.Forms Comment désactiver le bouton Retour dans la barre de navigation

Comment masquer globalement le titre du bouton de retour de la barre de navigation dans xamarin.ios

Comment masquer le bouton de retour dans les formulaires Xamarin de la barre de navigation

Masquer le bouton de retour dans la barre de navigation avec hidesBackButton dans Swift

Comment obtenir le bouton de retour dans la barre d'action avec la nouvelle navigation Jetpack

Désactiver le bouton retour dans la barre de navigation

Swift / XCode 6.4: ajouter le bouton de retour au contrôleur de navigation dans la barre de navigation

iOS - Quelle est la bonne façon d'afficher simplement le bouton de retour et aucune barre de navigation?

Comment aligner le titre au centre de la barre d'action avec le bouton de retour dans un fragment

Comment afficher le bouton «haut» / «retour» dans Xamarin.Forms?

Swift - Bouton de retour de l'interface utilisateur Web avec le bouton de retour de la barre de navigation

masquer et afficher le bouton de la barre de navigation gauche à la demande dans iOS-7

Afficher le contrôleur de navigation avec le bouton Retour

Impossible d'afficher le bouton de menu à la place du bouton de retour dans Ionic

Changer le bouton de retour en flèche vers le bas dans la barre de navigation

iOS - Transition de couleur de la barre de navigation lorsque vous appuyez sur le bouton Retour

Appuyer sur le bouton Retour de la barre de navigation avec EarlGrey

Supprimer le texte du bouton de retour de la barre de navigation dans SwiftUI

Afficher le bouton Retour dans la barre d'outils à l'aide de styles

Le bouton de retour créé par programme n'apparaît pas dans la barre de navigation?

comment masquer la navigation verticale au clic et afficher le contenu correspondant (Navigation sur site mobile avec bouton retour)

Suppression de la flèche de retour dans la barre de navigation en conservant le titre du bouton de retour

Comment afficher le bouton de la barre de navigation gauche?

vérification des données avant de quitter la vue via le bouton Retour dans la barre de navigation dans Swift iOS

Impossible de définir titleView au centre de la barre de navigation car le bouton de retour

bouton de retour et navigation dans le menu

Comment masquer / afficher le bouton droit dans la barre de navigation

TOP liste

  1. 1

    Comment changer le navigateur par défaut en Microsoft Edge pour Jupyter Notebook sous Windows 10 ?

  2. 2

    Enregistrer le chemin de l'image de la galerie vers la base de données de la salle et l'afficher dans la liste des recycleurs

  3. 3

    Microsoft.WebApplication.targets

  4. 4

    knn classification 10 plis de l'outil et du tri

  5. 5

    Créer un système Buzzer à l'aide de python

  6. 6

    Quelle est la relation entre le modèle et le tableau ? C'est compliqué

  7. 7

    AutoMapper.Collection.EFCore - Erreur générée lors de la configuration

  8. 8

    comment supprimer "compte de connexion google" à des fins de développement - actions sur google

  9. 9

    Fonction de puissance en Java

  10. 10

    Je continue à obtenir l'objet 'WSGIRequest' n'a pas d'attribut 'Get' sur django

  11. 11

    Spring @RequestParam DateTime format comme ISO 8601 Date Heure facultative

  12. 12

    Comment remplir les valeurs manquantes avec plusieurs colonnes dans R

  13. 13

    Comment puis-je ajouter un UIView sous mon contrôleur de barre d'onglets par programme?

  14. 14

    Comment créer un bot à compte à rebours dans Discord en utilisant Python

  15. 15

    Sélectionnez le bouton radio sur la saisie de texte

  16. 16

    Comment rechercher des éléments dans une ArrayList? - Java

  17. 17

    opérations en virgule flottante dans go

  18. 18

    Yat-il un référentiel maven application Java à démarrer rapidement 11

  19. 19

    Placez le modeBar en haut au centre à l'aide de plotly.js

  20. 20

    Comment définir la couleur de l'intersection dans un diagramme de Venn?

  21. 21

    Récupérer plusieurs dépôts git dans le même espace de travail Jenkins

chaudétiquette

Archive