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

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

新規登録して質問してみよう
ただいま回答率
85.49%
Xamarin

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

Q&A

解決済

1回答

578閲覧

Xamarin.FormsのiOSでListView - Cellの高さが動的に変わらない問題に対するベストプラクティスは?

sun_bacon

総合スコア7

Xamarin

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

0グッド

0クリップ

投稿2017/11/16 08:29

Xamarin.FormsのListViewやTableViewはCellの中身がBindingなどによって変わったときにiOSではセル高さが動的に変わりませんよね?

みなさんはこの問題はどう解決しているのでしょうか?

今は何かの変更イベント時に無理やりCellの高さをセットしてForceUpdateSize()を呼んでいるのですが、他になにかいい案がありますか?

ForceUpdateSize()を呼ぶとCell内で使っているEffectのOnAttachedやカスタムレンダラのPropertyChangedが何回も呼ばれるようになって困っています。さらに、TableViewだとCellの高さセットしてForceUpdateSize()呼んでも高さが反映されないです。ForceUpdateSize()はあまりいい方法ではないのかなと思っています。

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

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

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

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

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

guest

回答1

0

ベストアンサー

ForceUpdateSizeは使ったことがないのですがソースを見る限りTableViewでは呼ばれないみたいですね。

https://github.com/xamarin/Xamarin.Forms/blob/92552a70809bf5ce048c2500b0f487b936e3e99b/Xamarin.Forms.Core/Cells/Cell.cs#L85-L95

私はiOS側のUITableViewのReloadDataを呼んで解決しています。
行単位で更新する方法もあるみたいですが、めんどくさいのでこれで。

どちらの方法にせよ、iOSのTableViewに関してはCustomRendererで対応するしかなさそうです。

あとPropertyChangedやOnAtttachedの再呼び出しに関しては、セルを再描画する関係上やむを得ないと思います。

投稿2017/11/22 07:27

kamu

総合スコア208

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

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

sun_bacon

2017/11/24 02:36

TableViewでは呼ばれないんですね。 ListViewもTableViewもカスタムレンダラのReloadDataを使うようにしたら、思い通りの動きになりました。ありがとうございます! PropertyChangedやOnAtttachedの再呼び出しに関してなんですが、ちょっと不可解な動きなんです。。。ForceUpdateSize()を呼んだ数だけOnAtttachedが呼ばれる数が増えていきます。例えばセルTapでForceUpdateSize()を呼んでいるとタップを10回したら10回目にはOnAtttachedが10回呼ばれて中の処理によってはすごく重くなります。ReloadData()に変えたら何回タップしても再描画1回分しかOnAtttachedが呼ばれなくなりました。
shi_o

2018/11/26 12:49

横から失礼します。 ReloadDataを呼んだ場合、cell内で入力していたEditorのフォーカスが外れてしまうのですが、 対策等はありますでしょうか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問