0

わかりましたので、この方法で appDelegate.m ファイルから TableViewController を設定するチュートリアルを行いました。

UINavigationController *navController = (UINavigationController *) self.window.rootViewController; MasterViewController *masterController = [navController.viewControllers objectAtIndex:0]; masterController.bugs = bugs;

私はいくつかの練習のために自分の小さなアプリを試していますが、私のTableViewControllerはrootViewControllerではありません。その次の景色です。ストーリーボードを使用して GUI を作成していますが、それが必要かどうかはわかりません。

基本的に、配列であるメンバーを持つオブジェクトがあり、appDelegate ファイルにオブジェクトを作成し、TableViewController にオブジェクトの配列を設定したいと考えています。

ここにいくつかの追加の詳細があります:

私は提案され、0インデックスを1に置き換えましたが、この例外エラーが発生しました

2012-10-07 21:34:23.785 EasyBudget[5257:f803] * キャッチされない例外 'NSRangeException' が原因でアプリを終了します。理由: '* -[__NSArrayI objectAtIndex:]: 境界を超えたインデックス 1 [0 .. 0]' * First throw call stack: (0x14b5022 0xeb5cd6 0x14a1644 0x20c8 0x16386 0x17274 0x26183 0x26c38 0x1a634 0x139fef5 0x1489195 0x13edff2 0x13ec8da 0x13ebd84 0x13ebc9b 0x16c65 0x18626 0x1efd 0x1e65 0x1) terminate called throwing an exception

例外の理由がわかりました。何らかの理由で、ナビゲーション コントローラーからのさまざまなビューを保持する配列のインデックスは 0 しかありません。これを修正する方法がわかりません。Navigation Controller -> ViewController (ルートビューの関係) -> Table View Controller (これはアクセスしようとしているビューです) のようにストーリーボードを設定しました。ルート ビュー コントローラーからテーブル ビュー コントローラーへのプッシュ セグエを含むバー ボタン アイテムを追加しました。コードを追加する前にビルドして実行すると、すべてが機能し、ボタンを押すことができ、ビューコントローラーからテーブルビューコントローラーに移動し、ナビゲーションバーによって自動的に作成された戻るボタンを押して、ビューに戻ることができましたコントローラ。これがすべて正しく行われたことを願っています。これ以上の助けをいただければ幸いです。

4

1 に答える 1

0

わかりましたので、この方法で appDelegate.m ファイルから TableViewController を設定するチュートリアルを行いました。

テーブルビューコントローラーはナビゲーションコントローラーのルートビューコントローラーであるため、「チュートリアル」には意味があり、常に使用できるようになります。おそらく、テーブル内の行をタップすると、アプリはタップされた行に関連する詳細ビュー コントローラーに遷移し、その詳細ビュー コントローラーはおそらくテーブル ビュー コントローラーによって設定されていると思います。

アプリで同じパターンに従うことができます: アプリのデリゲートに、ナビゲーション コントローラーのルート ビュー コントローラーをセットアップするために必要なことをすべて実行させてから、そのコントローラーに遷移先のビュー コントローラーをセットアップさせます。ストーリーボードを使用しているので、これを行うのに適した場所はビュー コントローラーの-prepareForSegue:sender:メソッドです。そのメソッドでセグエの宛先ビュー コントローラーを取得し、新しいコントローラーに必要なデータをすべて渡すことができます (つまり、テーブル ビュー コントローラー)。それをすることです。

于 2012-10-08T03:19:39.657 に答える