Xamarin用导航页面形成iOS标签页

时间:2016-06-15 10:54:56

标签: ios navigation xamarin.forms navigationbar tabbedpage

所以,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)。

1 个答案:

答案 0 :(得分:4)

所以这就是我所做的。在您的App.cs(或主项目类)中,您需要创建一个包含TabbedPage的新NavigationPage,使用导航控制器您将拥有导航上下文,如果您不想,可以将您推送到下一页在顶部有一个导航栏,您可以推送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