Xamarin.iOS
Xamarin.iOS Navigation Drawer
Sök…
Syntax
- Flayout-navigeringskomponent: https://components.xamarin.com/view/flyoutnavigation
Xamarin.iOS Navigation Drawer
Skapa nytt Xamarin.iOS-tomt projekt (App för enkelvy).
Högerklicka på mappen "Komponenter" och välj "Hämta fler komponenter":
Typ i sökrutan: "Flout Navigation" och lägg till komponenten nedan i din app:
Kom också ihåg att lägga till "Mono.Touch.Dialog-1" -referens:
Klicka nu på projektet och lägg till en ny UIViewController med namnet "NavigationDrawerController":
Nu ska koden för klassen "NavigationDrawerController" se ut nedan:
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;
}
}
Inga bekymmer för att "MainNavigationController" är markerad med rött - vi lägger till det i nästa steg.
- Öppna nu filen "Main.storyboard":
a) Lägg till en UIViewController:
Fyll "Class" och "StoryboardID" -fält med detta namn: "FirstViewController"
b) Lägg sedan till Navigation Controller med root UIViewController:
Fyll "Class" och "StoryboardID" -fält med detta namn: "MainNavigationController" för Navigation Controller
Fyll "Class" och "StoryboardID" -fält med detta namn: "DetailsViewController" för rotkontrollern
Xamarin (eller Visual) Studio skapar kod bakom klasser för kontroller ovan.
- Öppna nu klassen "FirstViewController" och klistra in under koden:
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);
}
}
Öppna klassen "MainNavigationController" och klistra in under koden:
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(); } }
Den sista klassen som heter "DetailsViewController" ska se ut så här:
public partial class DetailsViewController : NavigationDrawerController
{
public DetailsViewController (IntPtr handle) : base(handle)
{
}
}
Observera att "DetailsViewController" härrör från "NavigationDrawerController" som vi skapade i början.
Det är allt. Nu kan du anpassa lådan hur du vill. Hitta också klart prov på min GitHub:
https://github.com/Daniel-Krzyczkowski/XamarinIOS/tree/master/Xamarin.iOS.NavigationDrawer