加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 资源网站 > 资源 > 正文

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读