C# 当存在';s超过5个选项卡栏项目&;用户可以重新排序吗?

C# 当存在';s超过5个选项卡栏项目&;用户可以重新排序吗?,c#,xamarin,xamarin.ios,C#,Xamarin,Xamarin.ios,我有一个Xamarin.iOS应用程序,其中包含5个以上的选项卡栏项目。在此应用程序的主屏幕中,选项卡栏被隐藏。 您仍然可以通过视图中的UI按钮而不是选项卡栏来导航应用程序 当选项卡栏项目少于5个时,我可以通过触摸按钮选择索引轻松导航: servicesButton.TouchUpInside += (sender, e) => { TabBarController.SelectedIndex = 1; }; 现在,由于我有5个

我有一个Xamarin.iOS应用程序,其中包含5个以上的选项卡栏项目。在此应用程序的主屏幕中,选项卡栏被隐藏。 您仍然可以通过视图中的UI按钮而不是选项卡栏来导航应用程序

当选项卡栏项目少于5个时,我可以通过触摸按钮选择索引轻松导航:

servicesButton.TouchUpInside += (sender, e) =>
    {              
        TabBarController.SelectedIndex = 1;
    };
现在,由于我有5个以上的选项卡栏项,用户可以对它们重新排序,所以我不能使用硬编码索引

我目前的工作解决方案是:

servicesButton.TouchUpInside += (sender, e) =>
    {
        for (int i = 0; i < TabBarController.ViewControllers.Length; i++)
        {
            if (TabBarController.ViewControllers[i].Title.Equals("Services"))
            {
                TabBarController.SelectedIndex = i;
            }
        }
    };
servicesButton.TouchUpInside+=(发送方,e)=>
{
对于(int i=0;i
这似乎是可行的,但有人知道更好的方法来完成这项任务吗

你可以:

  • 在视图上设置
    标记
    属性,例如,服务视图标记设置为5

  • 使用LINQ选择视图控制器

  • 然后在
    选项卡上设置
    SelectedViewController
像这样:

servicesButton.TouchUpInside+=(发送方,e)=>
{
var servicesViewController=TabBarController.ViewControllers.FirstOrDefault(x=>x.View.Tag==5);
if(servicesViewController!=null)
{
TabBarController.SelectedViewController=servicesViewController;
}
};

您可以在序列图像板/xib中设置标记,也可以通过编程方式设置标记。

是否可以使用具有唯一ID的对象来设置所选索引?