Syncfusion Datagrid 由于初始化控制而导致 Xamarin IOS 应用程序崩溃



我有一个Xamarin应用程序,其中我包含了Syncfusion Datagrid控件。我正在尝试将其部署到Visual Studio中的IOS模拟器。我添加了 NuGet 包并包含一个社区许可证。但是,它没有显示在屏幕上。为了解决这个问题,我按照 https://www.syncfusion.com/forums/137574/no-visible-data-grid-on-ios-platform-only 的建议添加了以下代码行。

Syncfusion.SfDataGrid.XForms.iOS.SfDataGridRenderer.Init();

但是,这现在导致我的应用程序崩溃,唯一的调试器信息是:

主.cs:

static void Main(string[] args)
{
// if you want to use a different Application Delegate class from "AppDelegate"
// you can specify it here.
UIApplication.Main(args, null, "AppDelegate"); #System.NullReferenceException: 'Object reference not set to an instance of an object'
}

应用委托.cs:

public override bool FinishedLaunching(UIApplication app, NSDictionary options)
{
global::Xamarin.Forms.Forms.Init();
Syncfusion.SfDataGrid.XForms.iOS.SfDataGridRenderer.Init();
LoadApplication(new App());
return base.FinishedLaunching(app, options);
}

如果我没有给你足够的关于我的设置的信息,请问,我很乐意提供。 :)

提前感谢!

我不知道问题的原因是什么,但是,通过将我的 Xamarin.Forms 和 Xamarin.Essentials 包分别降级到版本 4.5.0.495 和 1.3.1,我不再收到错误并且屏幕显示正确。

我通过制作一个新的测试项目并尝试重新创建我的代码来解决这个问题。然后我尝试运行它,它起作用了。因此,我将原始代码的版本更改为在由 Xamarin 模板生成的项目中工作的版本。

感谢大家的帮助:)

我也遇到过同样的问题;在最近的更新之后,我的应用程序在iOS的main.cs上崩溃并出现空异常。我终于隔离并解决了触发问题的原因。

当我填充的行数超过(跨平台,iOS(模拟器屏幕所能容纳的行数的SfDataGrid时,就会出现问题;一旦我尝试垂直或水平滚动,就会触发崩溃。但是,如果行数小于屏幕大小,则不会崩溃。该应用程序在一周前也运行良好。

事实证明,最新版本的 Xamarin.Forms 版本 4.6.0.968 中似乎存在一个错误。通过将 Xamarin.Forms 降级到版本 4.6.0.847,问题已得到解决。

以下链接提供了有关此问题的更多详细信息:

  • https://www.syncfusion.com/forums/155376/sfdatagrid-crashes-app-when-user-start-to-scroll-the-content-18-1-0-57
  • https://github.com/xamarin/Xamarin.Forms/issues/11132

如果您使用的是 Xamarin.iOS 平台而不是跨平台,则不需要渲染器初始化。

如果您使用的是 iOS 版本的 Xamarin.Forms,请参阅此处的入门文档以了解 DataGrid 组件的分步配置。确认已安装 Syncfusion.Xamarin.SfDataGrid NuGet 包。

如果您使用的是 Xamarin.iOS 平台本身,请参阅此处的文档以获取分步配置,并确保已安装 Syncfusion.Xamarin.SfDataGrid.IOS 包。

我希望这有所帮助。

最新更新