1

childviewcontroller にデータを渡そうとしています。2 つのボタンと 1 つのビューを備えたビュー コントローラーがあります。ボタンを押すと、表示されるビューが定義されます。具体的なケースは、アイテムのリストを表示したいです。最初の方法 (ボタン) はリストにあり、2 番目はマップビューにあります。アイテムを表示するには、カテゴリを子に渡す必要があります。

私のviewDidLoadでは、addchildviewcontrollerを使用して両方のビューコントローラーを追加し、ビューをリストビューコントローラーのビューに設定します。

-(void)viewDidLoad
{
    [super viewDidLoad];
    UIStoryboard* sb = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];

    ItemListViewController * itemListViewController = (ItemListViewController *)[sb instantiateViewControllerWithIdentifier:@"ItemList"];
    itemListViewController.view.frame = detailView.bounds;
    [self addChildViewController:itemListViewController];
    [itemListViewController didMoveToParentViewController:self];
    itemListViewController.category = category;

    ItemListMapViewController * itemListMapViewController = (ItemListMapViewController *)[sb instantiateViewControllerWithIdentifier:@"ItemListMap"];
    itemListMapViewController.view.frame = detailView.bounds;
    [self addChildViewController:itemListMapViewController];
    itemListMapViewController.category = category;

    childControllers = [NSArray arrayWithObjects:itemListViewController, itemListMapViewController, nil];

    [self.detailView addSubview:itemListViewController.view];
    currentPage = 0;
}

押されたボタンに応じて、ビューを変更します

- (IBAction)buttonClicked:(id)sender 
{   
    UIButton * button = sender;
    UIViewController *source = (UIViewController *)[childControllers objectAtIndex:currentPage];
    [source.view removeFromSuperview];
    UIViewController *destination = (UIViewController *)[childControllers objectAtIndex:button.tag - 100];
    [self.detailView addSubview:destination.view];
    currentPage = button.tag - 100;
    button = nil;
}

しかし、カテゴリを childviewcontrollers に渡しても何も起こりません。childcontrollers のカテゴリは常に null です。また、childviewcontrollerのparentviewcontrollerにアクセスしてカテゴリを取得しようとしましたが、

NSLog(@"::%@", ((ItemListHeaderViewController *)self.parentViewController).category);

しかし、これも null になります。

何が間違っているのかわからないか、封じ込めのストーリー全体を間違って理解しているのかもしれません... iOS開発は初めてなので、質問がばかげている場合は撃たないでください。:) これはスタック オーバーフローに関する私の最初の質問でもあります。

助けていただければ幸いです。前もって感謝します。敬具...

4

1 に答える 1

0

子ビュー コントローラー .h で:

@property(nonatomic, strong) NSString *category;

子 VC .m:

@synthesize category;

次に、親クラスでそのクラスへの参照を取得し、プロパティを設定します。なぜコードでこれを行っているのだろうか。これをIBでレイアウトするのはとても簡単で、セグエでの作業は私にとってより簡単です。

于 2012-08-15T10:41:46.997 に答える