問題タブ [reuseidentifier]
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 - テーブル ビューで固定セルを適切に管理する方法
設定アプリと同様に、固定された数のセクションを表示することを目的としたグループ化されたスタイルの UITableView があり、各セクションには固定された一連のセルがあります。一部のセルはカスタムで、それらの間で異なります。一部にはテキストフィールドがあり、別のセルにはスイッチがあり、別のセルにはボタンがあります。私もUITableViewCellStyleDefault
細胞を持っています。
カスタム セルはファイルから読み込まれ、テーブル ビュー全体で各セルnib
のプロパティを定義しました。strong
私のcellForRowAtIndexPath:
方法は次のようになります。
nib
カスタム セルについては、ファイル内で再利用識別子を "cell" に設定しました。設定アプリのように、たとえばフォームやメニューを表すテーブルのセルのセットを事前に知っている場合、これは正しい方法ですか? 再利用識別子はすべてのセルで同じですか、それとも異なるセルごとに一意の識別子を持つ必要がありますか?
ありがとう!
ios - UITableView の再利用の問題
画面全体(480px)をカバーするUITableViewがあります。
各セルの高さは 300px です。
合計5行あります。
以下は私が使用したコードです。
このコードを実行すると、各セルB - 1
にB - 5
書き込む必要があると予想されました。しかし、 の後B - 3
、私が見るのはB - 1
とだけB- 2
です。
NSLogは以下のように言います。
完全に下にスクロールすると、次のように NSLog が表示されます。
タグとテキストが適切に設定されている場合、最後の 2 つのボタンが B-4 と B-5 ではなく B-1 と B-2 として表示されるのはなぜですか。
この問題を解決する方法はありますか?
スクリーンショット 1
スクリーンショット 2
スクリーンショット 3
この問題を解決して B-1 から B-5 を書く方法はありますか?
注 : セルの高さを 100 に減らすと、すべてのボタン テキストが B-1 から B-5 として表示されます。
この質問は私の古い質問に関連していますが、これはより単純なバージョンです。
サンプルプロジェクト
私がしたことは、タグを使用せず、accessibilityValue を使用して、クリックされたボタンの ID を取得していることです。
ios - UITableViewHeaderFooterView の正しいサブクラス化と再利用
タップしてセクションを展開または折りたたむことができるセクションヘッダーがある UITableView があります。私の特定の例では、各セクションには 1 つの行しかなく、表示 (セクションが展開されている) または非表示 (セクションが折りたたまれている) のいずれかです。セクション ヘッダーとして、カスタム UITableViewHeaderFooterView - HeaderAccountView を使用しています。Interface Builder で *.xib ファイルを作成し、カスタム クラスを HeaderAccountView (まだ IB フィールド) に設定しました。
init
私の HeaderAccountView.h および HeaderAccountView.m ファイルには、このようなメソッドまたはsmthへの変更はありません .self(選択されたセクション)などを強調表示するいくつかの関数のみ.
メインの ViewController .m ファイルに
その後
プロジェクトを実行しているときはすべて問題ありません-必要なデータを含むセクションがロードされ、セクションがタップされると-ハイライトされます(標準セルのように)。
しかし、たとえば、選択した強調表示されたセクションからテーブルビューを下にスクロールすると、この強調表示されたセクションは既に表示されていません-下から表示されたセクション-すでに強調表示されています!
BOOL selected
プロパティをYESに設定し てHeaderAccountViewの新しいインスタンスを作成するためだと理解しています。
しかし、私はobjective-c(およびコーディング)が初めてで、これを解決する方法がわかりません。
prepareForReuse
このようなカスタム UITableViewHeaderFooterView のメソッドを使用しようとしました
それはうまく機能します-しかし、今私は別の問題を抱えています.最初の(本当に)選択され強調表示されたセクションに戻ると、明らかに強調表示されません.
助けてくれてありがとう。初歩的な質問ならごめんなさい。
iphone - 異なる種類の UITableViewCell を使用した UITableView のベスト プラクティス
彼女は私たちがしなければならないことです:
- tableView コア データのデータ ソース。
- 5 つの異なるタイプのカスタム tableViewCell を含む tableView。
- すべての tableViewCell は他とは完全に異なります。
- 一部の tableViewCell には、progressBar があります。
3 つのソリューションがあります。
- 一意の再利用識別子を持つ一意の tableViewCell を使用します。
- 5 つの再利用識別子を持つ一意の tableViewCell を使用します。
- 5 つの tableViewCell と 5 つの再利用識別子を使用します。
最初のソリューションをテストします。iPhone 5/iPhone 4S では問題ありませんが、iPhone 4 では遅いです (3GS もサポートする必要があります ...)。
質問: どちらのソリューションが優れているか? または、他の解決策があればそれは素晴らしいことです。
好意:最初のセルが割り当てられたとき、それらが再利用されたとき(1と異なる再利用識別子で)、それらが割り当て解除されたときのように、再利用識別子がどのように機能するかを説明できますか(詳細をお願いします:))?
ありがとうございました。
objective-c - Mac アプリケーションでのテーブル ビュー セルの再利用
現在、iOS アプリケーションを Mac に変換しようとしているため、iOS バージョンの動作の一部を複製したいと考えています。モバイル アプリケーションでは、コンテンツと高さに関して動的なテーブル ビューの行を使用し、表示するデータを設定するときに、セルに含まれるビューのフレームを調整します。
例えば:
高さ 100 のセルを開始し、次に別のセルのカスタム高さプロパティを 60 などにリセットし、セルによって表されるデータ オブジェクトを変更し、その調整された高さに収まるように含まれているビューを調整します。
ただし、Mac では期待どおりに動作しないようです。セルの初期化は正常に機能しているように見えますが、セルが再利用されるとすぐに、すべてが手に負えなくなったようです。
これが私のコードです:
およびMyCustomTableCellView
のデータ プロパティのセッター:
ご覧のとおり、someLabel
のテキスト (私の場合) はさまざまに変化しており、セルの寸法に合わせて調整したいと考えています。これは、セルが再利用された場合にのみ発生することを確認できます。
初期化結果:
結果の再利用:
ios - UICollectionViewCell の再利用の問題
ストーリーボードがあり、viewControllers の 1 つに CollectionView があります。内部にラベルがあるプロトタイプセルがあります。IBOutlet プロパティを介してラベルにアクセスできるように、そのプロトタイプ セルのクラスを作成しました。
問題は、私が多くの細胞を持っていることです。セルのコンストラクター内initWithCoder
にいくつか追加しますcornerRadius
。
このviewControllerを画面にプッシュすると、かなり遅れます。角の半径がなければ、そうではありません。initWithCoder
また、セルごとに常に呼び出されることにも気付きました。
このようにセルを登録しようとしまし[self.myCollectionView registerClass:[MyCell class] forReuseIdentifier:@"MyReuseIdentifier"]
たが、うまくいきません。registerNib
メソッドの使い方がわかりません。
再利用識別子は、ストーリーボード プロトタイプ セルに設定されます。
パフォーマンスを落とさずに角を丸くする方法がわかりません。
objective-c - UICollectionViewCell で複数の識別子を使用する
UICollectionViewCell で複数の識別子を使用したい。
しかし、CollectionView の再利用識別子を 1 つだけ設定できるようです。
実際には 1 つの識別子だけで機能しましたが、このように別の識別子を使用すると、エラー メッセージが表示されます。
キャッチされていない例外 'NSInternalInconsistencyException' が原因でアプリを終了しています。理由: '種類のビューをデキューできませんでした: 識別子 CollectionViewCell を持つ UICollectionElementKindCell - 識別子の nib またはクラスを登録するか、ストーリーボードのプロトタイプ セルを接続する必要があります'
UICollectionViewCellで複数の識別子を設定するにはどうすればよいですか?
複数のカスタム セルを同時に表示したい。
各セルには UIScrollView と UIPageControl があります。
別の識別子を設定できない限り、インスタンスは新しいセルに再利用され、UIPageControl は各 UIScrollView の動きに反応しません。