1

ファイルに基づいてViewControllerを動的に作成できるようにしたいと考えていJSONます。つまり、ユーザーが必要とする ViewController の数を決定する json が存在するということです。つまり、5 つの ViewController をレイアウトする json ファイルがあるとします。これらの ViewController を動的に作成し、それらの間で遷移できるようにしたいと考えています。

したがって、私が持っているのはJSON、ViewControllers を設定するファイルです。この例では 3 とします。この JSON ファイルには、テキスト、ボタンなどに関する情報と、それらの間を移動する方法が含まれています。

JSONしたがって、これをループして、必要なView Controllerを作成し、必要なテキスト、ボタンなどを追加できるようにしたいと考えています.またJSON、View Controllerがどのようにリンクするかを決定します.

1 つの VC を作成し、このように情報を追加する方法を知っています (これは簡単な例であり、VC を作成してラベルを追加しただけです。

    UIViewController *vc = [[UIViewController alloc] init];
    vc.view.backgroundColor = [UIColor whiteColor];

    UILabel *testLabel =[[UILabel alloc] initWithFrame:CGRectMake(220, 50, 130, 80)];
    testLabel.backgroundColor = [UIColor clearColor];
    testLabel.textColor = [UIColor blackColor];
    testLabel.text = @"Hello";;

    [vc.view addSubview:testLabel ];
    [self.navigationController pushViewController:vc animated:YES];

JSON を使用してループ内で複数の異なる名前の ViewController を作成する方法がわかりません。誰でもこれを行う方法について何か考えがありますか? または、このようなことは可能ですか?

どんな援助でも大歓迎です。

編集:

JSON がどのように見えるかの非常に基本的な例

{
   "ViewControllers":[
      {
         "name":"FirstVC",
         "id":1
      },
      {
         "name":"SecondVC",
         "id":2
      },
      {
         "name":"ThirdVC",
         "id":3
      }
   ]
}

したがって、最初の VC は 2 番目の VC にリンクし、2 番目の VC は 3 番目の VC にリンクします

4

3 に答える 3

2

配列を作成してそこに保持するだけです。このようなもの:

NSMutableArray *viewControllers = [[NSMutableArray alloc] initWithCapacity:0];

// ...
// Inside a loop
UIViewController *vc = [[UIViewController alloc] init];
vc.view.backgroundColor = [UIColor whiteColor];

UILabel *testLabel =[[UILabel alloc] initWithFrame:CGRectMake(220, 50, 130, 80)];
testLabel.backgroundColor = [UIColor clearColor];
testLabel.textColor = [UIColor blackColor];
testLabel.text = @"Hello";

[viewControllers addObject:vc];
// Release vc and label if you're not using ARC

ここで、コントローラーに名前を付けたい場合、1 つのアイデアは、のサブクラスを作成し、 (またはそのような) プロパティUIViewControllerを追加することです。name次に、ループ内でもこのプロパティを設定するだけで、そのプロパティに基づいて参照/フィルタリングできます。

于 2012-06-25T14:24:44.160 に答える
1

それらを個別の変数として明示的に名前を付けることはしませんが、異なる UIViewController インスタンスの NSArray を持つことができます。JSON ファイルを読み進めると、表示された情報をループして、ビュー コントローラーを作成し、JSON が指示するたびにそれを配列に追加することができます。完了したら、ユーザーが前後に移動するときに、View Controller を配列から引き出すことができます。

JSON はどのように見えますか? 例を投稿してください。より多くの情報を提供できる場合があります。

于 2012-06-25T14:22:47.347 に答える
1

ViewController に異なる名前が必要なのはなぜですか? 1 つの viewController クラスのインスタンスを作成するだけです。

たとえば、JSON から 3 つの「画面」がある場合:

  1. 2番目

そして、それらはすべて異なるボタン、テキストなどを持っています。また、クラス名は MyViewController です。画面を区別したい場合は、このクラスに @property 名、@property ボタン (おそらくボタン管理クラスのオブジェクトを持つ NSArray) などを含めることができます。

次に、オブジェクト (MyViewController クラス オブジェクト) を NSArray に格納する必要があります。

アプリの起動時に何をしたいか: MyViewController クラスのオブジェクトを作成して表示します。ユーザーが 2 番目の画面に移動したい場合は、同じクラスの別のインスタンスを作成するだけです。

したがって、画面の名前を表示したい場合self.nameは、ViewController クラスに値があります。

于 2012-06-25T14:25:30.383 に答える