Xamarin.iOS
Xamarin.iOS Navigation Drawer
Ricerca…
Sintassi
- Flayout Navigation Component: https://components.xamarin.com/view/flyoutnavigation
Xamarin.iOS Navigation Drawer
Crea un nuovo progetto vuoto Xamarin.iOS (Single View App).
Fare clic con il tasto destro sulla cartella "Componenti" e selezionare "Ottieni altri componenti":
Nella casella di ricerca digita "Flout Navigation" e aggiungi sotto componente alla tua app:
Ricorda anche di aggiungere il riferimento "Mono.Touch.Dialog-1":
Ora fai clic sul progetto e aggiungi un nuovo UIViewController chiamato "NavigationDrawerController":
Ora il codice per la classe "NavigationDrawerController" dovrebbe apparire come segue:
public partial class NavigationDrawerController : UIViewController
{
public NavigationDrawerController(IntPtr handle) : base(handle)
{
}
public override void ViewDidLoad()
{
base.ViewDidLoad();
NavigationItem.LeftBarButtonItem = getMenuItem();
NavigationItem.RightBarButtonItem = new UIBarButtonItem { Width = 40 };
}
UIBarButtonItem getMenuItem()
{
var item = new UIBarButtonItem();
item.Width = 40;
//Please provide your own icon or take mine from the GitHub sample:
item.Image = UIImage.FromFile("Images/[email protected]");
item.Clicked += (sender, e) =>
{
if (ParentViewController is MainNavigationController)
(ParentViewController as MainNavigationController).ToggleMenu();
};
return item;
}
}
Non preoccuparti che "MainNavigationController" sia evidenziato in rosso - lo aggiungeremo al prossimo passaggio.
- Ora apri il file "Main.storyboard":
a) Aggiungi un UIViewController:
Riempi i campi "Class" e "StoryboardID" con questo nome: "FirstViewController"
b) Successivamente aggiungere Navigation Controller con root UIViewController:
Riempi i campi "Class" e "StoryboardID" con questo nome: "MainNavigationController" per il Navigation Controller
Riempi i campi "Class" e "StoryboardID" con questo nome: "DetailsViewController" per il Root Controller
Xamarin (o Visual) Studio creerà classi code-behind per i controller sopra.
- Ora apri la classe "FirstViewController" e incolla sotto il codice:
public partial class FirstViewController : UIViewController
{
public FirstViewController (IntPtr handle) : base (handle)
{
}
public override void ViewDidLoad()
{
base.ViewDidLoad();
createNavigationFlyout();
}
void createNavigationFlyout()
{
var navigation = new FlyoutNavigationController
{
//Here are sections definied for the drawer:
NavigationRoot = new RootElement("Navigation")
{
new Section ("Pages")
{
new StringElement ("MainPage")
}
},
//Here are controllers definied for the drawer (in this case navigation controller with one root):
ViewControllers = new[]
{
(MainNavigationController)Storyboard.InstantiateViewController("MainNavigationController")
}
};
View.AddSubview(navigation.View);
}
}
Apri la classe "MainNavigationController" e incolla sotto il codice:
public partial class MainNavigationController : UINavigationController { public MainNavigationController (IntPtr handle) : base (handle) { } //Responsible for opening/closing drawer: public void ToggleMenu() { if (ParentViewController is FlyoutNavigationController) (ParentViewController as FlyoutNavigationController).ToggleMenu(); } }
L'ultima classe chiamata "DetailsViewController" dovrebbe avere questo aspetto:
public partial class DetailsViewController : NavigationDrawerController
{
public DetailsViewController (IntPtr handle) : base(handle)
{
}
}
Si noti che "DetailsViewController" deriva da "NavigationDrawerController" che abbiamo creato all'inizio.
Questo è tutto. Ora puoi personalizzare il cassetto come vuoi. Si prega inoltre di trovare campioni pronti sul mio GitHub:
https://github.com/Daniel-Krzyczkowski/XamarinIOS/tree/master/Xamarin.iOS.NavigationDrawer