問題タブ [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.
ios - Iphone - 各セルの高さが動的な場合、いつテーブルビューのheightForRowAtIndexPathを計算するのですか?
この質問が何度も聞かれるのを見てきましたが、驚くべきことに、一貫した答えを見たことがないので、自分で試してみます。
実行時に高さを決定する必要がある UITextViews と UILabels を含む独自のカスタム UITableViewCells を含むテーブルビューがある場合、heightForRowAtIndexPath の各行の高さをどのように決定するのですか?
最も明白な最初のアイデアは、cellForRowAtIndexPath 内のセル内の各ビューの高さを計算して合計し、後で取得できるように最終的な高さの合計を保存して、各セルの高さを計算することです。
ただし、cellForRowAtIndexPath は heightForRowAtIndexPath の後に呼び出されるため、これは機能しません。
私が考えることができる唯一のことは、viewDidLoad内ですべての計算を行い、次にすべてのUITableViewCellを作成し、セルの高さを計算してUITableViewCellサブクラス内のカスタムフィールドに保存し、各セルをindexPathとしてNSMutableDictionaryに配置することです次に、cellForRowAtIndexPath および heightForRowAtIndexPath 内の indexPath を使用してディクショナリからセルを取得し、カスタムの高さの値またはセル オブジェクト自体を返します。
ただし、このアプローチは dequeueReusableCellWithIdentifier を使用しないため、間違っているように見えます。代わりに、すべてのセルをコントローラーの辞書に一度にロードし、デリゲート メソッドは辞書から正しいセルを取得するだけです。
私はそれを行う他の方法を見ません。これは悪い考えですか? もしそうなら、これを行う正しい方法は何ですか?
iphone - heightForRowAtIndexPath内でUITableViewCellを取得する方法は?
UITableViewCell
メソッド内で when を取得するheightForRowAtIndexPath
方法、つまり indexPath を指定する方法は?
(その後、作成したコンテンツ ビューにアクセスして、それらの高さを合計することができます)
ありがとう
編集: 実際、これを行う有効な方法は本当にありますか? NSLog
いくつかのステートメントを入れるheightForRowAtIndexPath
と、呼び出しの前に数回呼び出されたようです(セル内cellForRowAtIndexPath
に設定した場所です)? UILabels
この種は、機能しない手法を使用しようとする可能性があることを意味します。つまりheightForRowAtIndexPath
、各セルで既に作成されているラベルにアクセスして高さを取得し、セル行全体の高さを合計することを望んでいました。まだセットアップされていない場合 (内cellForRowAtIndexPath
)、私のアプローチは実際には機能しないと思いますか?
iphone - セルがまだ構築されていない場合、heightForRowAtIndexPath を計算するにはどうすればよいですか?
質問 - UITableViewController の「heightForRowAtIndexPath」メソッドで行の高さを計算するにはどうすればよいですか?
- カスタム サブクラス化された UITableViewCell を使用しています。サブビュー (UILabels など) の実際のサイズは実行時に計算され、ユーザーがフォント サイズを変更した場合などに依存します。
- セルは実際には準備されていないため、「heightForRowAtIndexPath」の前にあるように見えるため、特定のカスタムセルインスタントを呼び出してクエリを実行することに頼ることはできません
現時点で私が考えることができる唯一のことは次のとおりです。 1.カスタムUITableViewCellサブクラスで、UITableViewCellサブクラスにある各サブビュー(UILabelなど)の高さを計算するメソッドを作成します-次に、セルサブクラス内でこれを使用しますインスタンスの作成 2. また、カスタム サブクラスで、すべての UILabels を実行するクラス メソッドを作成し、上記のメソッドを呼び出して高さを合計し、行の高さの合計を計算します。渡されたデータを取得する必要があります (各 UILabels のテキストなど) 3. UITableViewController "heightForRowAtIndexPath" で、上記 (2) の "calRowHeight" タイプのメソッドを呼び出して、ラベル テキスト データを渡す必要があります。 . そのため、行の高さの合計を計算する方法を知っているカスタム セル サブクラスのクラス メソッドを効果的に呼び出しますが、'
これよりも簡単な方法はありますか?
iphone - 警告:「メッセージ'sizeWithFont:constrainedToSize:lineBreakMode:'の受信者はnilです...」
私はこの警告を受けました:
「メッセージ'sizeWithFont:constrainedToSize:lineBreakMode:'の受信者はnilであり、ガベージになるタイプ'CGSize'の値を返します。」
理解できません。私は何が間違っているのですか?
これが私が使用しているコードです:
iphone - heightForRowAtIndexPathがすべての行に対して呼び出され、パフォーマンスの問題が発生する前にUITableViewの行数はいくつですか?
UITableView
すべての行で呼び出されるのでheightForRowAtIndexPath
はなく、表示される行でのみ呼び出されるために、それを読んだと思いました。しかし、これは私が見ているものではありません。heightForRowAtIndexPath
たとえば、iPhoneの向きが変わるという単純な状況について、 何百もの電話がかかってきます。
したがって、ここでは、UITableView
withがheightForRowAtIndexPath
実装されheightForRowAtIndexPath
ている場合、すべての行(表示されている行だけでなく)に対して呼び出されると想定しています...これが完全に正しくない場合はお知らせください。
質問:上記の場合、パフォーマンスの問題が通常発生する前に、UITableView
(heightForRowAtIndexPath
実装されている場所)にいくつの行を含めることができますか?
パフォーマンスの問題を回避する方法はありますか?つまり、各行の公称/標準の高さを設定し、実装しませんheightForRowAtIndexPath
が、表示されている場合にのみ各行の高さを正しく設定し、ここで正しく設定します...しかし、これを行う方法はどれですか?
iphone - 「削除」がスライドインしたときにUITableViewCellStyleSubtitleセルのテキストを切り捨てる方法は?
私はスタイルUITableView
を使用しています。UITableViewCellStyleSubtitle
を使用してセルの高さも増やしました
で目的の高さを計算しますheightForRowAtIndexPath
。ただし、ユーザーが「削除」ボタンをスライドすると、セル内のテキストが伸びて、セルの上端と下端に重なります。デフォルトのセル スタイルを使用した場合のようにテキストを切り詰めるにはどうすればよいですか? (または、セルの高さをもう一度変更できますか?)
iphone - 行の高さを0に設定してUITableViewを非表示にしますか?
heightForRowAtIndexPath
デリゲートメソッドを使用し、「非表示の行」に対して高さ0を返すことにより、UITableViewの行を非表示/表示するコードを継承しました。
コードは機能しますが、予期しない複雑な問題が発生する可能性があるのではないかと心配しています。誰かが私の懸念を和らげるか、これが問題を引き起こす可能性がある理由を教えてもらえますか (初期テストでは問題が見つかりませんでした)。
テーブルはかなり小さく、合計で 10 行未満であり、この非表示の行ソリューションがなくても、行の高さをカスタマイズする必要があります。
ios - グループ化されたテーブルにあるときのUITableViewCellの幅が間違っています
グループ化されたテーブル用にいくつかのカスタムセルを作成しています。セルには動的な高さがあり、heightForRowAtIndexPath内で計算します。
heightForRowAtIndexPathが呼び出されると、セルのcontentViewフレームは{0、0、287、44}(開示ボタンがあります)になり、contentViewの幅に従って高さを計算します。
ただし、セルがテーブルに追加されると、そのcontentViewは{10、1、267、53}に変更され、heightForRowAtIndexPathを新たに呼び出す必要はありません。これにより、レイアウトが完全に変更され、テキストがオーバーフローします。
グループ化されたテーブルのcontentViewの正しい幅を決定するにはどうすればよいですか?私の唯一のアイデアは値をハードコーディングすることですが、すべてを動的に計算することを好みます。
iphone - テーブルビューのセルの可変高さの設定
テーブルビューを読み込んでいます。テーブルビューの各セルの高さは、データに応じて異なります。以下のコードでは、テーブルの各行に連絡先を表示しています。各連絡先には複数の電話番号があります。各セルに連絡先とその電話番号を表示しています。したがって、各連絡先の電話番号の数に応じて、セルの高さが変わります。テーブルに連絡先を表示するために、次のコードを記述しました。
セルの高さを正しく設定する方法が見つかりません。実装しました
メソッドをデリゲートし、さまざまなロジックを試しました。しかし、行の高さを正しく設定できません。1つの問題は、indexpath.section値であるように思われます。これは、両方のデリゲートメソッドで変更される傾向があります。この場合、助けが必要です。
ios - TwitterのようなクライアントでUITableViewCell(それぞれにカスタマイズされた高さ)を再利用する
私はTwitterクライアントのiOSバージョンのようなプロジェクトに取り組んでいます。テーブルビューをデザインするとき、すべてのセルはそのコンテンツ(ツイート)に対応するために高さを変更します。
しかし、私は問題に遭遇しました。現在の画面のセルの高さはうまく機能しますが、下にスクロールすると、新しいセルは古いセルの高さを再利用します。