Xamarin.iOS
Szuflada nawigacji Xamarin.iOS
Szukaj…
Składnia
- Komponent Flayout Navigation: https://components.xamarin.com/view/flyoutnavigation
Szuflada nawigacji Xamarin.iOS
Utwórz nowy pusty projekt Xamarin.iOS (aplikacja Single View).
Kliknij prawym przyciskiem myszy folder „Components” i wybierz „Get More Components”:
W polu wyszukiwania wpisz: „Flout Navigation” i dodaj poniższy komponent do swojej aplikacji:
Pamiętaj również, aby dodać odniesienie „Mono.Touch.Dialog-1”:
Teraz mocno kliknij projekt i dodaj nowy UIViewController o nazwie „NavigationDrawerController”:
Teraz kod dla klasy „NavigationDrawerController” powinien wyglądać jak poniżej:
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;
}
}
Nie martw się, że „MainNavigationController” jest podświetlony na czerwono - dodamy go w następnym kroku.
- Teraz otwórz plik „Main.storyboard”:
a) Dodaj jeden kontroler UIViewController:
Wypełnij pola „Class” i „StoryboardID” następującą nazwą: „FirstViewController”
b) Po tym dodaj kontroler nawigacji z rootem UIViewController:
Wypełnij pola „Class” i „StoryboardID” nazwą: „MainNavigationController” dla kontrolera nawigacyjnego
Wypełnij pola „Class” i „StoryboardID” tą nazwą: „DetailsViewController” dla głównego kontrolera
Xamarin (lub Visual) Studio utworzy klasy kodu dla powyższych kontrolerów.
- Teraz otwórz klasę „FirstViewController” i wklej poniżej kodu:
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);
}
}
Otwórz klasę „MainNavigationController” i wklej poniżej kodu:
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(); } }
Ostatnia klasa o nazwie „DetailsViewController” powinna wyglądać następująco:
public partial class DetailsViewController : NavigationDrawerController
{
public DetailsViewController (IntPtr handle) : base(handle)
{
}
}
Pamiętaj, że „DetailsViewController” pochodzi od „NavigationDrawerController”, który stworzyliśmy na początku.
Otóż to. Teraz możesz dostosować szufladę do swoich potrzeb. Proszę również znaleźć gotową próbkę na moim GitHub:
https://github.com/Daniel-Krzyczkowski/XamarinIOS/tree/master/Xamarin.iOS.NavigationDrawer