我正在尝试将数据传递给childviewcontroller。 我有一个带有两个按钮和一个视图的视图控制器。按下按钮可定义显示的视图。 具体情况是我想显示一个项目列表。第一种方式(按钮)位于列表中,第二种方式位于mapview上。显示我需要将一个类别传递给孩子的项目。
在我的viewDidLoad中,我使用addchildviewcontroller添加了两个viewcontrollers,并将我的视图设置为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什么也没做。我的childcontrollers中的类别始终为null。 我还试图通过访问childviewcontroller上的parentviewcontroller来获取类别,
NSLog(@"::%@", ((ItemListHeaderViewController *)self.parentViewController).category);
但这也会导致null。
我不知道我做错了什么,或者我对整个遏制故事的理解是错误的......我是ios开发的新手,所以如果这个问题很愚蠢,请不要开枪。 :)这也是我关于堆栈溢出的第一个问题,所以如果我做错了也不要再拍了。
帮助将不胜感激。提前致谢。 亲切的问候......
答案 0 :(得分:0)
在子视图控制器中.h:
@property(nonatomic, strong) NSString *category;
儿童VC .m:
@synthesize category;
然后在父类中获取对该类的引用并设置该属性。我想知道你为什么要在代码中这样做。将这一点放在IB中是非常容易的,并且对我来说更简单易用。