Xamarin表单iOS渲染器 – 工具栏标准图标
发布时间:2020-12-14 18:49:20 所属栏目:资源 来源:网络整理
导读:我可以创建一个简单的Tab渲染器,它将更新我的Forms ToolBarItems以使用内置的iOS图标,如下所示. NavigationController在ViewWillAppear中只有NOT NULL如果我在ViewDidLoad中尝试,则为NULL. 这样做的问题是,在使用实际图标替换之前,您将收到TabBar Item文本的
我可以创建一个简单的Tab渲染器,它将更新我的Forms ToolBarItems以使用内置的iOS图标,如下所示.
NavigationController在ViewWillAppear中只有NOT NULL如果我在ViewDidLoad中尝试,则为NULL. 这样做的问题是,在使用实际图标替换之前,您将收到TabBar Item文本的闪光. 有不同的地方我应该拦截ToolBar的行为? [assembly: ExportRenderer(typeof(TabbedPage),typeof(TabRenderer))] namespace Cellar.iOS.Renders { public class TabRenderer : TabbedRenderer { public override void ViewWillAppear(bool animated) { base.ViewWillAppear(animated); var list = new List<UIBarButtonItem>(); foreach (var item in NavigationController.TopViewController.NavigationItem.RightBarButtonItems) { if (string.IsNullOrEmpty(item.Title)) { continue; } if (item.Title.ToLower() == "add") { var newItem = new UIBarButtonItem(UIBarButtonSystemItem.Add) { Action = item.Action,Target = item.Target }; list.Add(newItem); } if (list.Count > 0) NavigationController.TopViewController.NavigationItem.RightBarButtonItems = list.ToArray(); } } } } 解决方法
覆盖OnElementChanged方法:
protected override void OnElementChanged(VisualElementChangedEventArgs e) { base.OnElementChanged(e); if(e.NewElement!= null) { var list = new List<UIBarButtonItem>(); // Your code goes here } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |