iOSデバイスに配布したアプリでXuniのコントロールが表示されない場合の対処方法 (Xamarin.Forms)
対象製品
Xuni
詳細
リリースモードでiOSデバイスに配置した場合に、Xuniのようなカスタムコントロールが表示されない場合があります。
これはXamarinのビルドプロセスの中で、iOSデバイスに不要なリンクを排除して配布サイズを削減する機能が作動するためです。
その際に、追加ライブラリが排除対象になり正しく配布されないことがあります。
この問題を回避するため、通常はiOSプロジェクト内のAppDelegateで、FinishedLaunchingメソッド内に、コントロールを初期化するInitメソッドを記述します。
C#(Calendarの記述例)
しかし、それでも表示されない場合は、明示的にコントロールを描画するレンダラーをインスタンス化することで初期化し、正しく必要ライブラリである認識が行われます。
以下はCalendar(カレンダー)のレンダラーをダミーオブジェクトとしてインスタンス化した例です。
これをiOSプロジェクト内のAppDelegate.csに記述します。
以下はXuniに含まれる全コントロールの記述サンプルコードです。
使用するコントロールについてすべて記述してください。
ダミーインスタンス化の記述例
C#(iOS-AppDelegate.cs)
これはXamarinのビルドプロセスの中で、iOSデバイスに不要なリンクを排除して配布サイズを削減する機能が作動するためです。
その際に、追加ライブラリが排除対象になり正しく配布されないことがあります。
この問題を回避するため、通常はiOSプロジェクト内のAppDelegateで、FinishedLaunchingメソッド内に、コントロールを初期化するInitメソッドを記述します。
C#(Calendarの記述例)
Xuni.Forms.Calendar.Platform.iOS.Forms.Init();
しかし、それでも表示されない場合は、明示的にコントロールを描画するレンダラーをインスタンス化することで初期化し、正しく必要ライブラリである認識が行われます。
以下はCalendar(カレンダー)のレンダラーをダミーオブジェクトとしてインスタンス化した例です。
これをiOSプロジェクト内のAppDelegate.csに記述します。
public static Xuni.Forms.Calendar.Platform.iOS.CalendarRenderer calDummy;
以下はXuniに含まれる全コントロールの記述サンプルコードです。
使用するコントロールについてすべて記述してください。
ダミーインスタンス化の記述例
C#(iOS-AppDelegate.cs)
// FlexChart(チャート) public static Xuni.Forms.FlexChart.Platform.iOS.FlexChartRenderer chartDummy; // FlexGrid(データグリッド) public static Xuni.Forms.FlexGrid.Platform.iOS.FlexGridRenderer gridDummy; // Gauge(LinearGauge:線形ゲージ) public static Xuni.Forms.Gauge.Platform.iOS.LinearGaugeRenderer lgDummy; // Gauge(RadialGauge:円形ゲージ) public static Xuni.Forms.Gauge.Platform.iOS.RadialGaugeRenderer rgDummy; // Gauge(BulletGraph:ブレットグラフ) public static Xuni.Forms.Gauge.Platform.iOS.BulletGraphRenderer bgDummy; // FlexPie(円形・ドーナツグラフ) public static Xuni.Forms.FlexPie.Platform.iOS.FlexPieRenderer pieDummy; // Calendar(カレンダー) public static Xuni.Forms.Calendar.Platform.iOS.CalendarRenderer calDummy; // Input(AutoComplete:オートコンプリート) public static Xuni.Forms.Input.Platform.iOS.AutoCompleteRenderer acDummy; // Input(ComboBox:コンボボックス) public static Xuni.Forms.Input.Platform.iOS.ComboBoxRenderer cbDummy; // Input(DropDown:ドロップダウン) public static Xuni.Forms.Input.Platform.iOS.DropDownBaseRenderer ddDummy; // Input(MaskedTextField:マスク入力) public static Xuni.Forms.Input.Platform.iOS.MaskedTextFieldRenderer mtfDummy; // CheckBox(チェックボックス) public static Xuni.Forms.Core.Platform.iOS.XuniCheckBoxRenderer xcbDummy;