0

下部にタブバーがあり、アプリの焦点となる2つの異なるデータセットを表すアプリケーションを設計しています。これらのセットは両方とも同じデータ型ですが、コレクションが異なります(1つはエンティティに割り当てられ、もう1つは近くのエンティティですが、「エンティティ」は両方で同じタイプです)。各ViewController内には、同じデータのさまざまなビューの上部にあるトグルもあります(1つはサムネイルスタイルのビュー用、もう1つはマップビュー用)。

両方のタブで同じビューコントローラーの1つの共有インスタンスを持つ2ボタンタブバーコントローラーを使用しないという私の理解に基づいて、現在、コードを2つの別々のビューコントローラーに分割しています。1つは「割り当てられたエンティティ」用で、もう1つは「近くのエンティティ」の場合。問題は、ここのコードが各ViewControllerでまったく同じであるということです。異なるのは、エンティティの特定のコレクションだけです。私が理想的にやりたいのは、データの各セットに1つずつ、2つの配列を持つ1つのView Controllerを用意し、ユーザーがどのタブを使用しているかによって、ビューの入力に使用されるデータを変更することです。これを正しく行うためのアドバイスはありますか?これは確かにそれほどユニークな問題ではありませんが、これに正確に対処するためのオンライン上のものは見つかりません。通常、私はそこにあると思います

ありがとう。

4

3 に答える 3

2

「エンティティ」を処理する方法を知っているView Controllerクラスを1つだけ用意してください。各タブに 1 つずつ、同じクラスの 2 つのインスタンスを作成します。各View Controllerに適切なエンティティのセットを割り当てます。

于 2012-10-23T21:06:41.240 に答える
0

単一のViewControllerクラスを作成することもできますが、タブをクリックしたときに使用しているエンティティタイプを指定できるカスタムinitメソッドを作成できます。次に、エンティティタイプをメソッドのフラグとして使用して、エンティティタイプをタイプaまたはbとして処理する必要があるかどうかを判断できます。

おそらく、次のようなことを行うことができます。

EntityViewController *eVC = [[EntityViewController alloc]initWithNibName:@"EntityViewController" bundle:nil entityType:@"entityTypeA"];
[self.navigationController pushViewController:eVC animated:YES];

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil entityType:(NSString *)eType
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization for entities
        // Assign your value passed in init to your ivar here -- viewDidLoad hasn't run yet.
        _currentEntityType = eType;
    }
    return self;
}
于 2012-10-24T12:56:28.653 に答える
0

共有コードを 3 番目のヘルパー クラスにエクスポートし、そのコードを両方の viewController でコンポーネントとして使用します。その中のメソッドの目的に応じて、このクラスに名前を付けます。メソッドがインスタンス変数を使用しない場合は、それらをすべて静的にすることができるため、一連の関数を簡単に使用できます。

于 2012-10-23T21:11:34.440 に答える