2016-06-15 6 views
1

Итак, сторонники Xamarin и другие, я приглашаю всех вас попробовать и ответить, как я могу получить страницу навигации со вкладкой iOS?Xamarin формирует вкладку со страницы iOS со страницей навигации

Звучит довольно просто, не так ли? Для android, никаких забот, никаких проблем, ничего необычного, можно настроить все, что мне нужно.

Для iOS, с другой стороны, несмотря на то, что мне говорят, что я тот, кто не понимает практики Xamarin (или, другими словами, маршруты эвакуации, которые нужно принять для того, чтобы это действительно работало) У меня не может быть страниц навигации и вкладок, сосуществующих, без проблем.

Вот что происходит:

if (navigation page contains tabbed page) 
{ 
    no title is shown in the navigation bar 
} 
else if (each content page for the tabbed page is contained in a navigation page) 
{ 
    no icon or title is shown in the tab bar 
} 
else 
{ 
    The company manager does not want any else, there has to be a navigation page to allow opening other pages from the contents in each tab, and there has to be tabbed page and navigation bar for iOS 
} 

Теперь вопрос на миллион долларов, как говорят в США: как мы можем решить эту «тайну»?

Большое вам спасибо за все ответы и поддержку (на использование этого типа .. ах, инструмент, также известный как Xamarin).

+0

вы используете какие-либо рамки MVVM? Вы даете свой «ContentPage» значок и название? –

+0

нет, и да. никакие рамки не соблюдаются, ориентация менеджеров. Я лично пробовал этот mvvm, но в итоге предпочитал mvc, менее роботизирован и менее сложный для меня. как и для страницы содержимого, я установил и значок, заголовок на странице содержимого, и при настройке страницы с вкладками, но должен был установить его на каждую страницу навигации на каждом дочернем элементе этой вкладки. –

ответ

3

Так вот что я сделал. В вашем App.cs (или главном классе проекта) вам нужно создать новый NavigationPage, который содержит ваш TabbedPage, с навигационным контроллером у вас будет контекст навигации, и вы можете нажать на следующие страницы, если вы не хотите есть панель навигации в верхней части вы можете нажать ModalPages или использовать NavigationPage.SetHasNavigationBar(this, false);, фрагмент кода:

public class App : Application 
{ 
    public App() 
    { 
     MainPage = new NavigationPage(new MainTabbedPage()); 
    } 
} 

public class MainTabbedPage : TabbedPage 
{ 
    public MainTabbedPage() 
    { 
     Children.Add(new FirstPage()); 
     Children.Add(new SecondPage()); 
    } 
} 

public class SecondPage : ContentPage 
{ 
    public SecondPage() 
    { 
     Title = "Second Page"; 

     var btn = new Button 
     { 
      Text = "Click me" 
     }; 

     btn.Clicked += BtnBlicked; 

     Content = btn; 
    } 

    async void BtnBlicked(object sender, EventArgs e) 
    { 
     await Navigation.PushAsync(new ThirdPage()); 
    } 
} 

public class ThirdPage : ContentPage 
{ 
    public ThirdPage() 
    { 
     Title = "Third Page"; 
    } 
} 

enter image description here

+0

Большое вам спасибо за помощь. со всем этим гневом я забыл упомянуть, что я могу использовать только XAML (менеджер - несколько фанатик) и единственное решение (не одобрено, потому что согласно им я должен установить заголовок и значки только на страницах) было задание заголовка и значок для каждой навигационной страницы, следуя принципу сценария my else if (который они не одобряли), потому что вместо использования только одной страницы навигации я использую один для каждой страницы (представляющий каждую вкладку). Они ожидают чудеса из этого , потому что я могу использовать только элементы управления XF (без таможни и без табуляции) –

+1

все еще, я буду принимать ваш ответ, я считаю его действительным (я на самом деле прихожу из родного фонового Android, что означает, что нет только одного правильного ответа , есть возможности, есть знания и, прежде всего, то, что вы можете сделать, чтобы заставить его работать, пока это работает. Если вы можете его улучшить, продолжайте, если нет, оставьте его или попробуйте еще раз позже, потому что если он работает , это достаточно хорошо, и никто не должен быть репликой чего-то другого. быть творческими, следовать определенным принципам, но архитектура зависит от вас. как только я попал в мир Microsoft (создатели не так проданных мобильных телефонов os), что все ушло ... –

+0

@pemq С Xaml нет большой разницы, я полагаю (с вашим клиентом) вы можете делать события кнопок или навигации от кода позади, вам просто нужно сделать интерфейс и привязки с Xaml, есть предварительный просмотр для того, что называется Gorilla Player: http://gorillaplayer.com/ –