在TabbarRenderer Xamarin.iOS中取消导航

时间:2018-11-25 05:38:26

标签: c# xamarin xamarin.ios custom-renderer

我在Xamarin.Forms应用中有一个自定义的iOS标签栏渲染器。在某些情况下,我需要停止ItemSelected事件。本质上,如果用户点击选项卡上的项目,则我需要执行自定义操作,而不要导航。

ItemSelectedevent似乎为时已晚。我知道ShouldShowViewController上有一个UITabbarController方法,但是TabbarRenderer已将其抽象化。

我该如何实现?

1 个答案:

答案 0 :(得分:0)

解决方案:

有一个方法SelectViewController。它返回bool值。如果返回True,则在选择该项目时将浏览一个新页面,如果返回false则不会。以下代码。(例如,当您单击选项卡式页面上的第二个子页面时,您不想导航)

  

在自定义渲染器中

private xxx page;//xxx is your tabbedPage in forms

protected override void OnElementChanged(VisualElementChangedEventArgs e)
{
  base.OnElementChanged(e);

  if(e.NewElement!=null)
  {
    page = (xxx)e.NewElement;
  }

  else
  {
    page = (xxx)e.OldElement;
  }

  if (this.Element != null)
  {
     UITabBarController tabbar = (UITabBarController)this.ViewController;

     tabbar.ShouldSelectViewController += SelectViewController;

  }

}


public  bool SelectViewController(UITabBarController tabBarController, UIViewController viewController)
{
  if(viewController==this.ViewControllers[1])
  {
    //do something you want 

    return false;
  }

  else
  {
    return true;
  }

}