質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Xamarin

Xamarin(ザマリン)は、iPhoneなどのiOSやAndroidで動作し、C# 言語を用いてアプリを開発できるクロスプラットフォーム開発環境です。Xamarin Studioと C# 言語を用いて、 iOS と Android の両方の開発を行うことができます。

Q&A

1回答

422閲覧

【Xamarin.Forms】iOSでセルの再利用を抑止する方法

michitaka

総合スコア7

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Xamarin

Xamarin(ザマリン)は、iPhoneなどのiOSやAndroidで動作し、C# 言語を用いてアプリを開発できるクロスプラットフォーム開発環境です。Xamarin Studioと C# 言語を用いて、 iOS と Android の両方の開発を行うことができます。

0グッド

0クリップ

投稿2017/09/01 03:42

編集2017/09/01 05:38

###前提・実現したいこと
パッケージの問題かもしれませんが、助言をいただけると助かります。

現在、iOS向けにダウンロードしたファイルを一覧で表示するアプリを作成しています。
一覧の表示にはDLToolkit.Forms.Controls.FlowListViewというパッケージを使用し、グリッドビューのような表示にしています。

このとき、二つのデータテンプレートを作成し、アプリの設定値に応じてデータトリガーで表示を切り替えるような仕組みにしているのですが、
この表示の切り替えがうまくいきません。
(アイテムごとに表示を切り替えるのではなく、A表示モード、B表示モードというように全体の表示を切り替えます。)

具体的には以下のような現象が発生しています。
・最初に画面に表示されているアイテムの表示が切り替わらない
・最初に画面外にあるアイテムは切り替わっている
・スクロールして一度画面から消すと切り替わることがある
・アプリを一度落として起動しなおすと全て正しく表示される

現象的に「UITableViewのセルの再利用」が原因ではないかと思っているのですが、
Xamarin.FormsでUITableViewの表示を強制的にリフレッシュ/リロードする方法はありますでしょうか?

※追記
同じソースでUWPでは発生しません。

###開発環境
Visual Studio 2017
Xamarin.Forms 2.3.4.247
Prism.Forms 6.3.0
DLToolkit.Forms.Controls.FlowListView 2.0.6

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

tableView.reloadData()

https://developer.xamarin.com/api/member/UIKit.UITableView.ReloadData/

XamarineでもAndroid/iOSで共通にできないときはそれぞれのSDK(API)のラッパーを使うので
Nativeの実装も知っておく必要があるのですよね。

投稿2017/09/01 04:32

編集2017/09/01 04:33
Tak1016

総合スコア1408

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

michitaka

2017/09/01 05:36

早速のご返答ありがとうございます! とりあえずレンダラー(Effect)でやってみたのですが、現象変わらずでした。 UWP版では発生しないので、UITableViewが原因だとは思うのですが... 以下、Effectのコードです。 protected override void OnElementPropertyChanged(PropertyChangedEventArgs args) { if (args.PropertyName == "ItemsSource") { if (Control is UITableView lv) lv.ReloadData(); } }
Tak1016

2017/09/01 05:58

if (Control is UITableView lv) lv.ReloadData(); このif分ってtrueになってlv.RealoadData() がきちんと実行されているのでしょうか。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問