1

私は Cocoa と Core Data に不慣れで、奇妙な問題に遭遇しました。Core Data モデルを正常に作成し、データをインポートし、UI (ナビゲーション コントローラー、searcDdisplayController を使用した tableViewController) を作成しましたが、1 つの問題で立ち往生しています。UITableViewController ( nibファイルにUITableViewなし)を実装すると、 fetchedResultsControllerからフェッチされた結果が奇妙になります。

ただし、追加することでこの問題を修正できました@synthesize tableView; .mファイルで。

次に、別の問題が発生しました。行をクリックして詳細ビューを押してから、ナビゲーションコントローラーの戻るボタンをクリックすると、tableView で選択された行がまだ選択されています。

何が悪いのかはっきりしていることを願っています。要約してみましょう: @synthesize tableView; を配置しない場合。実装ファイルの上部で、行の選択解除は正常に機能していますが、結果は間違っています - tableView で 8 行 (500 行中) が繰り返されています。をファイルに入れた場合@synthesize、tableView のデータは正しいのですが、ナビゲーション コントローラーで tableView に戻ったときにアニメーションが表示されません。

また、 listviewcontrollerの nib ファイルにUITableViewを配置しようとしましたが、結果は同じで、行の選択が解除されませんでした。デリゲートの行の選択も解除しようとしましたが、 nullです。viewWillAppearindexPath of the indexPathForSelectedRow

ああ、私はNSFetchedResultsControllerを使用しています。私が言ったように-フェッチされた結果は正しいですが、テーブルビューに適切に供給されていないようです(合成されていない場合..)

ありがとう!

4

2 に答える 2

1

行の強調表示の問題を解決できるかもしれませんが、他の項目でお手伝いできるように、いくつかのコード例を含める必要があります...

行の選択を解除するには、メソッド [deselectRowAtIndexPath:animated:] を呼び出すことができます。これにより、tableView 選択デリゲートから詳細ビュー コントローラーをプッシュする前または後に、行の選択を解除できます。テーブル ビュー リファレンス

于 2011-01-28T16:08:38.047 に答える
0

返信ありがとうございます。

うーん..解決策を見つけたかもしれませんが、それが正しいかどうかはわかりません..新しいクラスに UITableViewController を実装していますが、実際にはデータのフェッチに新しい UITableView (tableView2) を使用しています。UITableViewControllerを作成したnibファイルで、クラス名をカスタムクラスに設定しましたが、Interface Builderのテーブルビューを新しく作成したtableView2に接続しませんでした。私はあなたが理解できることを願っています..それは非常に複雑です、この全体のもの:S

それで、私がこれを正しく理解すれば、UITableViewController を実装すると、私のクラスは自動的に self.tableView を取得しますか? しかし、私の質問で言ったように、.m ファイルでプロパティを合成しないと、コントローラーは行を自動的に選択解除できません..しかし、そうすると、データは正しくなく、繰り返されます.. cellForRowAtIndexPath に問題があるのか​​もしれません。ここで、self.tableView からセルを取得しますが、論理的ではありません:S

とにかく、行の選択解除のアニメーションは私の干渉なしに機能し、表示されるデータは正しいです。UITableViewController には、NSFetchedResultsController を使用する場合に上書きする必要がある他のメソッドがいくつかあると思われます。

私の方法は間違っていると思いますか?カスタム UITableViewController クラスに新しい UITableView がありますか?

于 2011-01-29T00:40:14.290 に答える