简体   繁体   English

在TabbarRenderer Xamarin.iOS中取消导航

[英]Cancel Navigation in TabbarRenderer Xamarin.iOS

I have a custom tabbar renderer for iOS in a Xamarin.Forms app. 我在Xamarin.Forms应用程序中有一个用于iOS的自定义Xamarin.Forms渲染器。 In certain cases, I need to stop the ItemSelected event. 在某些情况下,我需要停止ItemSelected事件。 Essentially, if the user taps the item on the tabbar, I need to perform a custom action and NOT navigate. 本质上,如果用户点击选项卡上的项目,则我需要执行自定义操作,而不要导航。

It seems that the ItemSelectedevent is too late to do this. 看来ItemSelectedevent为时已晚。 I know that there is a ShouldShowViewController method on the UITabbarController , but this has been abstracted away by the TabbarRenderer . 我知道ShouldShowViewController上有一个ShouldShowViewController方法,但是UITabbarController已将其抽象TabbarRenderer

How can I achieve this? 我该如何实现?

Solution: 解:

There is a method SelectViewController .It return a bool value .If return True ,it will navigate a new page when you select the item ,and won't if return false.You can refer the following code.(For example you don't want to navigate when you click the second child page on tabbed page ) 有一个SelectViewController方法SelectViewController它返回一个bool值。如果返回True ,则在选择该项目时将在新页面中导航,如果返回false则不会。您可以参考以下代码。(例如当您在选项卡式页面上单击第二个子页面时想要导航)

in Custom Renderer 在自定义渲染器中

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;
  }

} 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM