- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在我的主页的 iOS native 代码中有一个自定义渲染器。当应用程序启动时它工作得很好,并使用我想要的 iOS 系统图标呈现 Navbar 项目。但是,如果我离开主页,当我导航回来时,RightBarButtonItems
数组只包含两个未实例化的对象,我会检查 (RightNavItems.Title == null
) 在这种情况下继续查看会发生什么,并且确实没有呈现项目,如果我导航离开并再次返回应用程序崩溃,因为 RightBarButtonItems
数组现在为空。
为什么导航回主页时工具栏项目未初始化?在这样的自定义渲染器中处理导航的正确方法是什么?
这是自定义渲染器的代码:
public class ItemsPageRenderer : PageRenderer
{
public new ItemsPage Element
{
get { return (ItemsPage)base.Element; }
}
public override void ViewWillAppear(bool animated)
{
base.ViewWillAppear(animated);
var rightNavList = new List<UIBarButtonItem>();
var navigationItem = this.NavigationController.TopViewController.NavigationItem;
for (var i = 0; i < Element.ToolbarItems.Count; i++)
{
var reorder = (Element.ToolbarItems.Count - 1);
var ItemPriority = Element.ToolbarItems[reorder - i].Priority;
UIBarButtonItem RightNavItems = navigationItem.RightBarButtonItems[i];
if (RightNavItems.Title == null)
continue;
if (RightNavItems.Title.ToLower() == "add")
{
rightNavList.Add(new UIBarButtonItem(UIBarButtonSystemItem.Add)
{
Action = RightNavItems.Action,
Target = RightNavItems.Target
});
}
else if (RightNavItems.Title.ToLower() == "edit")
{
rightNavList.Add(new UIBarButtonItem(UIBarButtonSystemItem.Edit)
{
Action = RightNavItems.Action,
Target = RightNavItems.Target
});
}
else
{
rightNavList.Add(RightNavItems);
}
}
navigationItem.SetRightBarButtonItems(rightNavList.ToArray(), false);
}
}
最佳答案
检查这段代码
var rightNavList = new List<UIBarButtonItem>();
var navigationItem = this.NavigationController.TopViewController.NavigationItem;
for (var i = 0; i < Element.ToolbarItems.Count; i++)
{
var reorder = (Element.ToolbarItems.Count - 1);
var ItemPriority = Element.ToolbarItems[reorder - i].Priority;
UIBarButtonItem RightNavItems = navigationItem.RightBarButtonItems[i];
if (RightNavItems.Title == null)
continue;
if (RightNavItems.Title.ToLower() == "add")
{
rightNavList.Add(new UIBarButtonItem(UIBarButtonSystemItem.Add)
{
Action = RightNavItems.Action,
Target = RightNavItems.Target
});
}
else if (RightNavItems.Title.ToLower() == "edit")
{
rightNavList.Add(new UIBarButtonItem(UIBarButtonSystemItem.Edit)
{
Action = RightNavItems.Action,
Target = RightNavItems.Target
});
}
else
{
rightNavList.Add(RightNavItems);
}
}
navigationItem.SetRightBarButtonItems(rightNavList.ToArray(), false);
第一次进入页面时,您将项目外观从 title
更改为 icon
,但是,当第二次进入页面时,条件 RightNavItems.Title == null
为 true,因此它跳出循环而不向列表添加任何项目,因此 navigationItem.SetRightBarButtonItems
最后添加一个 null 数组。
修改如下
if (RightNavItems.Title == null)
{
rightNavList.Add(RightNavItems); //add this line.
continue;
}
关于c# - Xamarin Forms - CustomRenderer 在导航离开后不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55417104/
我创建了一个 Jtable。这个表由两列名称和时间戳组成。如果名称为“jane”,我想将行的颜色设为黄色。以下是该代码:- class CustomRenderer extends Defau
我想根据 JTable 中的值对某些行进行着色。但是我的 customrenderer 被无限次调用,并且整个表格而不是某些行都被着色。 public Component getTableCellRe
我在我的主页的 iOS native 代码中有一个自定义渲染器。当应用程序启动时它工作得很好,并使用我想要的 iOS 系统图标呈现 Navbar 项目。但是,如果我离开主页,当我导航回来时,Right
我的问题是我想更改 jTable 中一列中单元格的单独背景颜色。我想出的代码将颜色更改为一种,并且它适用于所有列。我做错了什么? 这是我的代码 public void fillReserveTable
因此,我在位于 SalesKicker.Droid 中的 CustomSwitchRenderer 类中遇到了这些错误。以下是错误: OnElementCHanged(ElementChangedEv
我有一个 Xamarin Forms 项目,我想在其中有一个按钮,必须按长 才能触发事件。除了长按事件,我还需要按下按钮的确切时间,因为那时我想在 UI 上启动一些动画。 我制作了一个自定义渲染器来解
我正在使用 Xamarin.Forms,并为 UWP 中的 Checkbox 创建了一个 CustomRenderer。当我通过单击“Alle”按钮将 ListView 中我的项目的所有复选框设置为
我正在努力寻找解决方案希望有人能给我指出正确的方向。 我需要导航到 Forms ContentPage,例如: Navigation.PushAsync(new ExamplePage()); 然后从
我刚刚将我的应用程序升级到 Android 7.1(API25) 并更新了 NuGet 包,如下所述: Xamarin.GooglePlayServive.Maps to v42.1021.1 Xam
我尝试在 NavigationBar 上为 Xamarin.Forms android build设置背景图像。那里的例子彼此几乎相同。我使用了这个自定义渲染器; [assembly: ExportR
我是一名优秀的程序员,十分优秀!