我在Xamarin.Forms
应用中有一个自定义的iOS标签栏渲染器。在某些情况下,我需要停止ItemSelected
事件。本质上,如果用户点击选项卡上的项目,则我需要执行自定义操作,而不要导航。
ItemSelectedevent
似乎为时已晚。我知道ShouldShowViewController
上有一个UITabbarController
方法,但是TabbarRenderer
已将其抽象化。
我该如何实现?
答案 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;
}
}