• 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧

Xamarin.Forms – 禁用SwitchCell OnPlatform抛出异常的iOS

c/c++ 来源:Segamoto 8次浏览

我特林在Xamarin.Forms禁用SwitchCell为iOS这样:Xamarin.Forms – 禁用SwitchCell OnPlatform抛出异常的iOS

<SwitchCell x:Name="mySC" Text="Foo" OnChanged="myFnc"/> 
<SwitchCell.IsEnabled> 
    <OnPlatform x:TypeArguments="x:Boolean"> 
      <OnPlatform.iOS> 
       false 
      </OnPlatform.iOS> 
      <OnPlatform.Android> 
       true 
      </OnPlatform.Android> 
     </OnPlatform> 
</SwitchCell.IsEnabled> 

当我运行在iOS模拟器此代码,抛出异常:

System.Reflection.TargetInvocationException:通过调用的目标异常已被抛出 。 —> System.NullReferenceException: Xamarin.Forms.Cell.OnIsEnabledPropertyChanged(Xamarin.Forms.BindableObject bindable,System.Object oldvalue, System.Object newvalue)[0x00000]对象引用未设置为对象实例 在 C:\ BuildAgent \工作\ aad494dc9bc9783 \ Xamarin.Forms.Core \ \细胞Cell.cs:197

如果我为OnPlatform.iOS值设置为true它的工作原理。如果我没有使用OnPlatform标记并将其设置为例如IsEnabled="false"它适用于所有平台 – 假设是关于iOS模拟器中的一个错误。

===========解决方案如下:

我认为问题是SwitchCell.IsEnabled属性必须位于SwitchCell元素内。您正在使用表格:

<SwitchCell x:Name="mySC" Text="Foo" OnChanged="myFnc"/> 

它会在设置IsEnabled属性之前关闭开关单元定义。因此,该属性设置SwitchCell的定义,而不是在它之外内

<SwitchCell Text="{Binding .}" > 
     <SwitchCell.IsEnabled> 
      <OnPlatform x:TypeArguments="x:Boolean"> 
       <OnPlatform.iOS> 
        false 
       </OnPlatform.iOS> 
       <OnPlatform.Android> 
        true 
       </OnPlatform.Android> 
      </OnPlatform> 
     </SwitchCell.IsEnabled> 
</SwitchCell> 

:相反,试试这个。我刚刚测试过,并且在iOS和Android上都能正常工作,但是使用你的代码在iOS上失败了。


版权声明:本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系管理员进行删除。
喜欢 (0)