問題タブ [heightforrowatindexpath]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
79 参照

uitableview - heightForRowAtIndexPath と UITableView scrollToBottom での初期読み込みパフォーマンスの低下

適切なメカニズム (FetchedResultsController などを使用) を介して CoreData から情報を読み取る UITableView があります。この情報は、テキスト、またはテーブルビューにロードするローカル イメージへの URL です。

データは、ボトムアップ方式 (メッセージング アプリと同様) でテーブルに入力する必要があります。私は iOS 8 以降をターゲットにしていますが、estimatedHeightForRowAtIndexPath を使用すると、3 つ以上の複数行のラベルと画像でひどいジャーキネスが発生します。それが1行のUILabelでない限り、見積もりはあまりにもかけ離れているようです。私の推測では、セルの高さはセルの上部からセルの下部まで成長するように、トップダウン方式で推定されています。これは、上から下へのスクロールは問題ありませんが、下から上へのスクロールはうまくいかないことを意味します。これは、上にスクロールするとセルが動的に「下に」サイズ変更されるためです。

現在、セルの高さを計算するために heightForRowAtIndexPath を使用しています。これに関する問題は、セルの高さがすべて一度に計算されるため、ビューが最初に読み込まれるまでに非常に長い時間がかかることです。セルの高さのキャッシュを使用してセルの高さを保存しているため、ビューが読み込まれるとスクロールがスムーズになります。

だから私の質問は次のとおりです。3〜5秒の初期ロードヒットなしでheightForRowAtIndexPathを使用するにはどうすればよいですか?

そして、ボーナスの質問をフォローアップしてください。高さが大きく異なるセルがある場合、estimatedHeightForRowAtIndexPath を確実に使用する方法はありますか? 44px から 300px までの範囲を指します。私が読んだことから、この状況では推定高さの計算はまったく使用できません。

EstimatedHeight/heightForRowAtIndexPath に関するすべての stackoverflow の投稿を使い果たしましたが、同じ投稿を複数回見始めています。だから私は立ち往生しています。

0 投票する
3 に答える
6519 参照

objective-c - プログラムでセルの高さを動的に変更する

私はSOでたくさんの答えを試しましたが、実際には何もうまくいきませんでした。私はおそらく何か間違ったことをしているので、誰かが私が間違っていることを指摘する必要があります..

「NSConcreteAttributedString initWithString:: nil value」という理由で「NSInvalidArgumentException」を取得します。これは、セルの高さを設定するまでに self.cell.comment.text が何も取得されていないためです。

多くの人がその答えについて、この方法は問題なく機能するとコメントしているので、何か不足していると思いますか?

編集

ここで self.cell.comment.text を設定しています -

0 投票する
1 に答える
302 参照

ios - heightForRowAtIndexPath メソッド内のセルの reuseIdentifier を特定するにはどうすればよいですか?

私は2つの異なるタイプの細胞を持っています。メソッドでそれぞれに異なるサイズを割り当てる必要があります。

細胞の種類はどのように判断できますか? たぶん、reuseIdentifier などを取得します。

更新 これを試してみると

私は例外を受け取ります ここに画像の説明を入力

0 投票する
2 に答える
496 参照

ios - 1 つの tableView のみに行の高さを設定し、heightForRowAtIndexPath で他の tableView を無視しますか?

自動レイアウトで動的に行が設定された1つのTableViewを持つTableViewControllerがありました。

メニューに使用されるコントローラーに別の TableView を追加しました。行の高さは 65 に設定する必要があります。

問題は、heightForRowAtIndexPathにあります。この tableView メニューの行に対して 65 を返す方法を知っています。しかし、自動レイアウトを行う方法がわかりません。それは、他のtableViewのことです。

これを達成する方法を知っている人はいますか?

これが私のコードです:

0 投票する
1 に答える
1486 参照

ios - セルの高さのキャッシュと UITableView の [sizeToFit] は、*時々* 間違った高さを表示します

問題: 私は、推定された高さの行でインデックスパスと高さの行でインデックスパスを使用して計算されたセルの高さが間違った高さを返すという問題があります。具体的には、1 行のテキスト ラベルの高さがステッカーと同じ高さを返すことがあります (高さが大きすぎます)。または、画像が 1 行のテキスト ラベルと同じ高さになります (高さが小さすぎます)。

理論:メッセージの種類に応じて、異なるセルの高さを使用します。テキストがステッカーと同じ高さ (150 固定の高さ) として表示されることがあるため、セルが再利用されている場所にバグがあるのではないかと考えています。または、セルの高さのキャッシュを保存/読み取る方法にバグがあります。

報酬: 何が起こっているのかを把握するために、少なくとも 1 か月は費やしました。簡単な問題ではありません。あなたは私の永遠の感謝と、私がそれを追加できるときの報奨金を受け取ります.

これは、いくつかのコンテキストのコードです。まず、heightForRowAtIndexPath:

また、複数行のラベルを機能させるには、カスタム セル クラスで preferredMaxLayoutWidth を設定する必要がありました。

これがセルの高さキャッシュの私の実装です。cachedCellHeights は合成された NSDictionary にすぎないことに注意してください。

推定されたHeightForRowAtIndexPathとheightForRowAtIndexPathの両方に同じコードが使用されていることに注意してください。推定高さで重い計算を行うべきではないことはわかっています。ただし、セルを下から積み重ねており、高さが大きく異なる可能性があるため、この計算を行う (またはキャッシュから読み取る) 必要があります。そうしないと、一番下までスクロールする機能が機能しません (スクロールは、推定された高さの計算が不適切であると判断された場所にスクロールされます。これは、意味をなさないランダムな場所です)。

解決策またはアドバイスや提案をいただければ幸いです。

0 投票する
1 に答える
419 参照

ios - UITableView はラグがあり、スクロールするとジャンプします

動的セルで UITableView を使用しています。すべてのセルには、いくつかのボタン、画像、およびラベルがあります。画像の幅はテーブルビューの幅に等しく、高さは可変です。

関数によって cellForRowAtIndexPath の画像の高さを更新しています...縦横比を尊重します。ラベルには 1 行以上を含めることができます。

セルの高さを設定するために heightForRowAtIndexPath を使用しています。そこで計算して値を返します。

スクロールするとテーブルが少し遅れてジャンプする理由がわかりません。

0 投票する
2 に答える
769 参照

ios - heightForRowAtIndexPath が呼び出されますが、高さは変わりません

myTableView という UITableView があります。tableView で実行したいことは、実際には非常に単純です。ユーザーがセルをタップすると、セルが展開されます。つまり、tableView へのアコーディオンです。この部分は私にとってはうまく機能しますが、ユーザーが mapView のマーカーをタップしたときにセルを展開したい (私は Mapbox を使用しています)。マーカーには数字で終わるタイトルがあり、この数字を使用してどのセルを展開するかを決定します。したがって、タイトル文字列から番号を取得し、その番号を行として NSIndexPath (localIndexPath と呼ばれる) を作成します。その後、次の方法で手動で適切なセルを選択しています。

その後、次の方法で didSelectRowAtIndexPath を呼び出します。

これは、両方の方法で正常に呼び出される heightForRowAtIndexPath を呼び出しますが、実際の高さは、マーカーをクリックしたときではなく、セルをクリックしたときにのみ変化します。私の質問は、それがなぜであり、どうすれば両方の方法で機能させることができるのですか?

対応するすべてのメソッドのコードは次のとおりです。

ドイツ語のプリントで申し訳ありませんが、意味を理解できると思います (ist = is、für = for、höhe von = 高さ)。

そして、これが2番目のセルをタップしたときのログです。これは正常に機能しており、セルは意図したとおりに拡張されます。

そして、これは注釈をタップしたときのログです。セルは視覚的に拡大していません:

事前に感謝し、私の下手な英語で申し訳ありません!

0 投票する
3 に答える
732 参照

ios - heightForRowAtIndexPath が断続的にクラッシュする

私は約 30 人のアクティブ ユーザーと 500 人以上の登録ユーザーを持つアプリを持っていますが、この問題は iPhone 6 を使用して 9.2 を使用している 1 人のユーザーでのみ発生しています。

クラッシュ レポートからわかるように、彼女は 60 回以上のクラッシュを経験しており、問題が発生することもあれば、問題が発生しないこともあります。

ここに同じテスト デバイスがありますが、問題は発生していません。

ファブリックからのクラッシュ レポートの詳細から多くを引き出すことはできませんが、クラッシュは次のメソッドで発生しており、アプリはこのメソッドの最後の elseでクラッシュしています。彼女の問題の説明からわかります。

疑問に思っている人のために、テーブル ビューの自動ディメンションを使用していたときに発生していたジクザクしたスクロールを避けるために、高さを計算する必要があります。したがって、アプローチを切り替えるのではなく、ここで問題を解決する必要があります。

crashlytics からの情報:

そして、heightForView 関数:

nil のチェックでコードを更新しましたが、ユーザーはまだクラッシュしています。