0
votes

Syncfusion Datagrid plante l'application Xamarin IOS en raison de l'initialisation du contrôle

J'ai une application Xamarin dans laquelle j'ai inclus le contrôle Syncfusion Datagrid. J'essaye de déployer ceci sur un simulateur IOS dans Visual Studio. J'ai ajouté le package NuGet et inclus une licence communautaire. Cependant, il ne s'affichait pas à l'écran. Pour résoudre ce problème, j'ai ajouté la ligne de code suivante, comme conseillé par https://www.syncfusion.com/forums/137574/no-visible-data-grid-on-ios-platform-only .

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

Cependant, cela entraîne maintenant le plantage de mon application avec les seules informations de débogage étant:

main.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'
}

AppDelegate.cs: p >

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

Si je ne vous ai pas donné suffisamment d'informations sur ma configuration, veuillez simplement demander et je serai heureux de vous les fournir. :)

Merci d'avance!


5 commentaires

avez-vous ajouté un bloc try / catch autour de la ligne de code suspecte?


@Jason J'ai, cependant, parce que la fonction UIApplication.Main est une commande très large, je n'ai pas pu obtenir quoi que ce soit d'utile ... Connaissez-vous une meilleure façon de recueillir des informations de débogage?


ajouter un rapport de plantage appcenter.ms. Le crash ne se produit pas réellement dans Main, il ressemble juste à ça quand un crash non géré se produit.


Désolé @Jason, je n'ai jamais utilisé cela auparavant ... avez-vous un lien / tutoriel que je peux suivre pour me montrer comment l'utiliser pour trouver la racine de l'erreur? Merci encore


docs.microsoft.com/en-us/ appcenter / sdk / Getting-started /…


3 Réponses :


0
votes

Vous n'avez pas besoin de l'initialisation du moteur de rendu si vous utilisez la plate-forme Xamarin.iOS et non la plate-forme multiplateforme.

Si vous utilisez la version iOS de Xamarin.Forms, reportez-vous la documentation de mise en route ici pour connaître la configuration étape par étape du composant DataGrid. Confirmez que vous avez installé le package NuGet Syncfusion.Xamarin.SfDataGrid .

Si vous utilisez la plate-forme Xamarin.iOS elle-même, veuillez reportez-vous à la documentation ici pour les configurations étape par étape et assurez-vous que vous avez installé le Package Syncfusion.Xamarin.SfDataGrid.IOS .

J'espère que cela vous aidera.


4 commentaires

désolé, j'aurais dû être plus clair. mon application est une application de formulaires xamarin multiplateforme, elle comporte donc des parties génériques, IOS, Android et UWP. Je ne suis préoccupé que par la partie IOS car c'est la seule partie avec laquelle j'ai eu des problèmes ... :)


Je viens de vérifier et tout semble être à la hauteur de ce que vous avez mis en évidence ... D'autres idées?


Essayez de comparer votre échantillon avec l'exemple de démonstration ici pour affiner. github.com/SyncfusionExamples/…


Car sans savoir ce qui est jeté comme nul, il n'est pas possible d'aller plus loin. Ou peut-être essayez de télécharger une démo de ce que vous avez essayé, ce serait plus facile de vous aider.



1
votes

Je ne sais pas quelle était la cause du problème, cependant, en rétrogradant mon package Xamarin.Forms et Xamarin.Essentials aux versions 4.5.0.495 et 1.3.1 respectivement, je n'ai plus eu l'erreur et l'écran était affiché correctement.

J'ai compris cela en créant un nouveau projet de test et en essayant de recréer mon code. Ensuite, j'ai essayé de l'exécuter et cela a fonctionné. Ainsi, j'ai changé les versions de mon code d'origine pour les versions qui fonctionnaient dans le projet qui a été généré par un modèle Xamarin.

Merci à tous pour leur aide :)


0 commentaires

1
votes

J'ai moi aussi rencontré ce même problème; après des mises à jour récentes, mon application s'est plantée avec une exception null sur le main.cs dans iOS. J'ai finalement isolé et résolu ce qui déclenchait le problème.

Le problème est survenu lorsque j'ai rempli un SfDataGrid avec plus de lignes que ce qui pouvait en contenir sur un écran de simulateur (multiplateforme, iOS); cela déclencherait un crash dès que j'essayais de faire défiler verticalement ou horizontalement. Cependant, si le nombre de lignes était inférieur à la taille de l'écran, cela ne plantait pas. L'application a également bien fonctionné il y a environ une semaine.

Il s'avère qu'il semble y avoir un bogue dans la dernière version de Xamarin.Forms version 4.6.0.968. En rétrogradant Xamarin.Forms à la version 4.6.0.847, le problème a été résolu.

Le lien suivant fournit plus de détails sur ce problème:


1 commentaires

En supposant que vous n'ayez pas supprimé accidentellement votre propre réponse, elle a probablement été supprimée par des réviseurs ou un utilisateur réputé pour ne pas répondre aux normes de Stack Overflow pour une réponse. Si le texte était identique à ce republication, cela peut être dû au temps de votre première phrase; après examen rapide, il semblait que vous aviez toujours le problème. Nous recevons beaucoup de réponses disant «J'ai aussi ce problème» sans pour autant apporter une solution. J'ai reformulé votre réponse pour qu'il soit plus clair que vous avez pu isoler et résoudre ce problème. Pendant que j'y étais, j'ai également fait quelques petites modifications pour la lisibilité.