2009-05-17 33 views
1

私は、配列によって設定されたUITableViewを持っています。(押したときに)配列にアイテムを追加し、UITableViewの[self.tableView reloadData]を呼び出すナビゲーションバーにボタンがあります。これにより、numberOfRowsInSectionが呼び出され、正しい行数(配列内の項目数)が返されますが、cellForRowAtIndexPathは呼び出されません。 新しいナビゲーションベースのアプリケーションを作成して解決策を見つけましたが、まったく同じ問題があります。 誰かが答えを知っていれば、私は最後の日のために私の髪の毛が残っているものを裂いてきました! テストプロジェクトのソースを私のサイト(www.sofaracing.com/Downloads/Test3.zip)に入れました。問題の再読み込みUITableView

+0

私は、テーブルの前にモーダルビューをポップアップし、配列を更新してreloadDataを呼び出し、モーダルビューを削除してから、絶対に問題ありません。テーブルビューが表示されているときにこの現象が発生しないのはなぜですか? –

答えて

2

Works for me! ;)

MainWindow.xibでは、ルートコントローラ(これはナビゲーションコントローラの一部ではありません)を追加しました。削除する必要はありません。次に、outlet refreshFriendsListをRootViewControllerのNavigationItemのBar Buttonに接続します。やあ、魔法!

注意:警告をクリーンアップする必要があります。また、UIApplication sharedApplicationを使用する代わりに、データモデル用のクラスを作成することも考えてください。

+0

私はMainWindow.xibのNavigationControllerからRootViewControllerを削除しましたが、そのボタンなしでIBActionにバーボタンを接続する方法を理解できません...? –

+0

私のコメントを無視する、私はそれを得た!どうもありがとうございます! –

1

すぐにテストアプリケーションをデバッグしました。私は根本的な原因を突き止めることはできませんでしたが、Interface Builderセットアップでいくつか混乱しているため、2つの異なるテーブルビューがあるようです。

元の配列を項目で初期化すると、cellForRowAtIndexPathが正しく呼び出されます。この呼び出しでself.tableViewインスタンスを調べ、後でrefreshFriendsListを呼び出すと、self.tableViewは別のインスタンスを指しています。

2009-05-17 14:33:07.591 Test3[33580:20b] cellForRowAtIndexPath 0 
2009-05-17 14:33:07.594 Test3[33580:20b] self.tableView: <UITableView: 0x52b9b0> 
2009-05-17 14:42:36.810 Test3[33762:20b] numberOfRowsInSection: tableView <UITableView: 0x53bcd0>