2012-08-15 53 views
1

我想將數據傳遞給childviewcontroller。 我有一個視圖控制器有兩個按鈕和一個視圖。按下按鈕定義顯示的視圖。 具體的情況是我想顯示一個項目列表。第一種方式(按鈕)在列表中,第二種方式在地圖視圖中。顯示我需要將某個類別傳遞給孩子的項目。addchildviewcontroller傳遞數據

在我的viewDidLoad中添加兩個viewcontrollers與addchildviewcontroller en我的視圖設置爲listviewcontroller的視圖。

-(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; 
} 

Acoording的按鈕按下我改變我的看法

- (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中的類別始終爲空。 我還試圖通過訪問對childviewcontroller的parentviewcontroller拿到類別,

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

,但這也導致空。

我不知道我在做什麼錯,或者我正在理解整個遏制故事錯了......我是新來的ios開發,所以如果問題是愚蠢的,所以不要開槍。 :)這也是我的第一個關於堆棧溢出的問題,所以如果我做錯了什麼,也不要再拍。

幫助,將不勝感激。提前致謝。 親切的問候......

+0

如何在視圖控制器中聲明'category'變量? – tikhop 2012-08-15 10:30:03

+0

「category」的屬性聲明是什麼?它(非原子,保留)? – 2012-08-15 11:49:41

回答

0

在子視圖控制器的.h:

@property(nonatomic, strong) NSString *category; 

兒童VC .M:

@synthesize category; 

然後獲得在父類到類的引用,並設置財產。我想知道你爲什麼在代碼中這樣做。在IB中完成這項工作非常容易,並且可以更直接地與我一起工作。

+0

這就是ElJay所說的:destination.category = category; – ader 2012-08-15 10:47:20

+1

這是爲什麼被低估? – 2013-04-16 16:50:13