我正在尝试将数据传递给 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 开发的新手,所以如果这个问题很愚蠢,请不要开枪。:) 这也是我关于堆栈溢出的第一个问题,所以如果我做错了什么,再次不要开枪。
帮助将不胜感激。提前致谢。亲切的问候...