問題タブ [uitableview]
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.
iphone - 個別のデリゲート/データソースを使用する場合のUITableViewの問題
概要:
何が機能するかから始めるために、UITableView
InterfaceBuilderを使用してXcodeで生成されたビューに配置されたを持っています。ビューのファイル所有者は、Xcodeで生成されたのサブクラスに設定されUIViewController
ます。このサブクラスに、との実用的な実装numberOfSectionsInTableView: tableView:numberOfRowsInSection:
とtableView:cellForRowAtIndexPath:
テーブルビューdataSource
を追加delegate
し、InterfaceBuilderのファイル所有者を介してこのクラスに接続しています。
上記の構成は問題なく機能します。dataSource
この問題は、このテーブルビューと実装を別のクラスに移動したい場合に発生します。delegate
おそらく、テーブルビュー以外にビューに他のコントロールがあり、テーブルビュー関連のコードをそのクラスに移動したいためです。独自のクラス。これを達成するために、私は次のことを試みます:
UITableViewController
Xcodeでの新しいサブクラスを作成します- の既知の適切な実装を
numberOfSectionsInTableView:
新しいサブクラスにtableView:numberOfRowsInSection:
移動しますtableView:cellForRowAtIndexPath:
- をInterfaceBuilderの既存のXIB
UITableViewController
の最上位に ドラッグし、このために自動的に作成された/を削除してから、のクラスを新しいサブクラスに一致するように設定しますUIView
UITableView
UITableViewController
UITableViewController
UITableView
以前に機能していたの既存のdataSource
接続を削除し、delegate
それらを新しい接続に接続しますUITableViewController
完了したとき、私は動作していませんUITableView
。私は、一見ランダムに発生する可能性のある3つの結果のうちの1つになります。
- ロードすると、それを認識しないオブジェクト
UITableView
に送信していることを示すランタイムエラーが発生しますtableView:cellForRowAtIndexPath:
- ロードされると、プロジェクトは
UITableView
エラーなしでデバッガーに侵入します - エラーはありませんが、表示され
UITableView
ません
デバッグを行い、この問題を再現するためだけに基本的なプロジェクトを作成したところ、通常、上記の3番目のオプションが表示されます(エラーはありませんが、テーブルビューは表示されません)。NSLog呼び出しをいくつか追加したところ、numberOfSectionsInTableView:
とnumberOfRowsInSection:
は両方とも呼び出されていますが、そうでcellForRowAtIndexPath:
はないことがわかりました。私は本当に単純なものが欠けていると確信しており、私よりも経験豊富な人にとって答えが明白になることを望んでいました。これが簡単な答えではない場合は、コードまたはサンプルプロジェクトで更新していただければ幸いです。御時間ありがとうございます!
再現するための完全な手順:
- Xcodeで新しいiPhoneOS、ビューベースのアプリケーションを作成し、それを呼び出します
TableTest
TableTestViewController.xib
Interface Builderで開き、提供されたビューサーフェスにをドラッグしますUITableView
。UITableView
'sdataSource
とdelegate
-outletsをファイルの所有者に接続します。ファイルの所有者はすでに-classを表しているはずですTableTestViewController
。変更を保存します- Xcodeに戻り、次のコードをに追加します
TableTestViewController.m:
Build and Goを実行すると、単語
Hello
がUITableView
この
UITableView
ロジックを別のクラスに移動するために、最初にXcodeで新しいファイルを作成し、UITableViewController
サブクラスを選択してクラスを呼び出します。TableTestTableViewController
- 上記のコードスニペットをから削除して
TableTestViewController.m
に配置しTableTestTableViewController.m
、これら3つのメソッドのデフォルトの実装を私たちのものに置き換えます。 - 同じファイル内のInterfaceBuilderに戻り、をメインIBウィンドウに
TableTestViewController.xib
ドラッグして、自動的に付属していた新しいオブジェクトを削除します。UITableViewController
UITableView
- この新規のクラスをに設定
UITableViewController
しますTableTestTableViewController
- 以前に機能していた既存のバインディングから
dataSource
とバインディングを削除し、同じ2つのバインディングを作成した新しいバインディングに再接続します。delegate
UITableView
TableTestTableViewController
- 変更を保存し、ビルドして実行します。取得した結果が得られた場合は、
UITableView
正しく機能しなくなったことに注意してください。
解決策:iPhone開発者フォーラム
からのトラブルシューティングと支援を受けて、解決策を文書化しました!プロジェクトのメインサブクラスには、インスタンスUIViewController
を指すアウトレットが必要です。UITableViewController
これを実現するには、プライマリビューのヘッダー(TableTestViewController.h
)に以下を追加するだけです。
と
次に、Interface Builderで、ファイルの所有者からの新しいアウトレットをTableTestTableViewController
メインIBウィンドウに接続します。XIBのUI部分を変更する必要はありません。ユーザーコードが直接使用していなくても、このコンセントを設置するだけで、問題は完全に解決されます。助けてくれた人々に感謝し、解決策を見つけるためにiPhone開発者フォーラムのBaldEagleにクレジットを送ります。
ios - -didSelectRowAtIndexPath: 呼び出されていません
タブ ビュー内にテーブル ビューを持つ iOS アプリを作成しています。私のUITableViewController
では を実装-tableView:didSelectRowAtIndexPath:
しましたが、実行時に行を選択すると、メソッドが呼び出されません。ただし、テーブル ビューには値が設定されているため、コントローラー内の他の tableView メソッドが呼び出されていることがわかります。
これを実現するために私が何を台無しにしたのか、誰か考えがありますか?
iphone - UITableViewCellSelectionStyle プロパティをカスタム カラーに設定するにはどうすればよいですか?
私は iPhone アプリケーションを開発しています。テーブル ビューで、セルの選択スタイルにカスタム カラーが必要でした。UITableViewCell クラス リファレンスを読みましたが、選択スタイルに定義されている定数は 3 つしかありません (青、グレー、なし)。リファレンスで定義されている色とは異なる色を使用するアプリケーションを 1 つ見ました。
リファレンスで定義されている以外の色をどのように使用できますか?
前もって感謝します。
iphone - UITableViewCell の適切なサイズを決定するより良い方法はありますか?
コンテンツに応じて可変サイズになる UITableView セルがあります (数行のテキストになる可能性があります)。
セルをレイアウトする前にheightForRowAtIndexPath が呼び出されているように見えるので、テキスト文字列で [NSString sizeWithFont] を呼び出して正しい高さを推測します。セル内にテキストをレイアウトし、正確なサイズを把握した後に高さを設定するより良い方法はありますか?
ios - UITableViewCellの背景色をカスタマイズするにはどうすればよいですか?
UITableView内のすべてのUITableViewCellの背景(および場合によっては境界線も)をカスタマイズしたいと思います。これまでのところ、このようなものをカスタマイズすることはできなかったので、デフォルトの白い背景セルがたくさんあります。
iPhone SDKでこれを行う方法はありますか?
iphone - UITableView の境界線を削除するにはどうすればよいですか?
UITableView コントロールをサブクラス化し、スタイルをグループ化しましたが、セル セパレータは必要ありません。テーブル ビューのセパレーター スタイルを none に設定しようとしましたが、うまくいきません。誰でも私を助けることができますか?
iphone - UITableView ヘッダーの UIButton はほとんどのタッチを無視します
テーブル ビューの tableHeaderView のサブビューとして追加するボタンがあります。ボタンは問題なく表示され、タップアンドホールドは断続的に機能しますが、ほとんどの場合、反応しません. テーブル自体のサブビューとして追加しようとしました。効果はほぼ同じです。スクロールビューのタッチインターセプトに問題があるのではないかと思いましたが、テーブルのスクロールを無効にしても効果はありません。
私は何か間違ったことをしていますか?他の誰かがこれに遭遇しましたか?
編集 - 明確にするために、グループ化されたスタイルのテーブルのセクション ヘッダーではなく、メイン テーブル ヘッダーについて話しています。基本的には「お問い合わせ」画面をモデルに考えています。
iphone - UITableViewのスクロール位置をリセットするには?
UITableView のスクロール位置を完全にリセットして、開くたびに一番上の項目が表示されるようにしたいと思います。つまり、テーブルビューを開くたびに一番上までスクロールしたいのです。
次のコードを使用してみましたが、ドキュメントを誤解しているようです。
これはここで間違ったアプローチですか?
iphone - 複数選択を許可するように UITableView を構成することは可能ですか?
iPhone の場合、複数選択できるように UITableView を構成することはできますか?
私は-setSelected:animated:
各 UITableViewCell のオーバーライドを試みましたが、別のセルの選択のために UITableView が選択を解除したと考えるものから実際の選択解除を分離するのが難しいため、必要な動作をごまかすのは難しいです!
誰かが助けてくれることを願っています!
ありがとう、
ニック。
iphone - 編集モードを終了する
UITableView を設定するオブジェクトの配列があります。ユーザーが配列から最後のオブジェクトを削除すると、新しい「デフォルト」オブジェクトが自動的に作成されます。ただし、TableView では、ユーザーがそこに到達したとき、リストはまだ「編集」モードになっています。プログラムで TableView を「通常」モードに戻す方法はありますか?