1

我正在尝试将数据传递给 childviewcontroller。我有一个带有两个按钮和一个视图的视图控制器。按下按钮定义显示的视图。具体情况是我想显示一个项目列表。第一种方式(按钮)在列表中,第二种方式在地图视图中。要显示项目,我需要将类别传递给孩子。

在我的 viewDidLoad 中,我使用 addchildviewcontroller 添加两个视图控制器,然后将我的视图设置为 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;
}

根据按下的按钮,我改变了我的看法

- (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 什么也没做。我的子控制器中的类别始终为空。我还尝试通过访问 childviewcontroller 上的 parentviewcontroller 来获取类别,

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

但这也会导致 null。

我不知道我做错了什么,或者我对整个收容故事的理解是错误的……我是 ios 开发的新手,所以如果这个问题很愚蠢,请不要开枪。:) 这也是我关于堆栈溢出的第一个问题,所以如果我做错了什么,再次不要开枪。

帮助将不胜感激。提前致谢。亲切的问候...

4

1 回答 1

0

在子视图控制器 .h 中:

@property(nonatomic, strong) NSString *category;

子 VC .m:

@synthesize category;

然后在父类中获取对该类的引用并设置属性。我想知道你为什么在代码中这样做。在 IB 中进行布局非常容易,并且对我来说使用 segues 更直接。

于 2012-08-15T10:41:46.997 回答