0

初めてのアプリを作っています。Xcode 4 とストーリーボードを使用して、何が起こっているかをよりよく把握しています。アプリは (ストーリーバードで) 4 つのタブを持つ TabBarController で始まります。タブのうちの 2 つは、テーブルビュー システムを備えたナビゲーション コントローラーであり、他の 2 つのタブは通常のビュー コントローラーです。

TabBarController 自体は Storyboard でのみ作成し、そのためのクラスは作成しませんでした。したがって、アプリではすべてのタブが同時に「実行」されているように見えますが、別のタブに入って戻っても変更されません。専門外のように見えますし、iPhoneにも悪いのでしょうか?

ここで、別のタブが入力されたときに左のタブを非アクティブ/RootViewController にリセットしたいと考えています。

つまり、TabBar に対してある種のデリゲート関数を作成して、選択したタブのみがアクティブになるようにします。そんな感じ。間違っている場合は訂正してください。私は自分が何をする必要があるかを理解しようとしているだけです。

調査の結果、AppDelegate.h で TabBar のプロパティを作成し、それを AppDelegate.m で合成してから、TabBar のデリゲートを AppDelegate (self ?) または何かに作成するだけで済みます。 (AppDelegate.m):

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
//some statements.

次に、AppDelegate.m のどこかに次のようなものを追加します。

- (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item
//With some statements about the viewcontrollers

しかし、ご覧のとおり、私はコーディングの経験があまりなく、xibsなどを使用しているため、理解できるチュートリアル/ガイドを見つけることができません。それを行う方法を理解するにはコード例が必要です。プロセスを言葉で説明するだけの場合、私の言いたいことを理解すれば、新しい質問がたくさん出てきます。

4 つのタブ (2 つのテーブルビューと 2 つのビュー) を表すクラスを呼び出しましょう。

FirstTableViewController、SecondTableViewController、FirstViewController、SecondViewController

AppDelegate でこの関数を作成するだけで十分かどうか、または TabBar のクラス (.h/.m) を作成する必要があるかどうか、別の ViewControllers クラスなどにコードを追加する必要があるかどうかはわかりません。

誰かがこれを最も簡単で正しい方法で行うのを手伝ってくれることを願っています。他の多くの人がアプリ開発の初心者段階でこのジレンマにぶつかり、これに対する答えが非常に役立つと思うでしょう.

ご協力ありがとうございました。

4

1 に答える 1

2

これは、Apple が意図し、ユーザーがタブ バー ベースのアプリケーションに期待する動作です。現在の場所を失うことなく、アプリケーションのさまざまな領域を表示できます。

ただし、特定の状況下で、View Controller を元の状態にリセットしたい場合は、特定の View Controller でこれを行うことができますviewWillAppear

アプリ デリゲートとタブ バー コントローラーのデリゲート メソッドを介してこれを処理する場合は、ストーリーボード / XIB が読み込まれた後にタブ バーへの参照を取得します。使用するだけです:

rootViewController.tabBarController.delegate = selfアプリデリゲートの内部。

tabBarControllerまたは、左側のペインのオブジェクト リストでタブ バー コントローラーを選択し、アイデンティティ インスペクターに移動して、クラスをUITabBarControllerカスタム サブクラスに変更することにより、ストーリーボードで のクラスを独自のカスタム クラスに変更できます。

于 2012-07-22T14:59:51.650 に答える