我在我的应用中添加了类似Facebook的菜单。为此我创建了两个ViewController。在菜单按钮上单击添加LeftViewController作为childViewController。工作正常,如图所示。这是我的代码: -
[self addChildViewController:left];
[self showMenu];
[view_mainHome addSubview:left.view];
[left didMoveToParentViewController:self];
现在我调用ParentViewController的一个函数来从childViewController关闭这个视图,即(LeftViewController)。所以问题是方法被调用,但视图不是动画。我正在调用方法,如: - ParentViewController * parent = [[ParentViewController alloc] init]; [parent hideLeftMenu];
我在ParentViewController.m中的方法如: -
- (无效)hideLeftMenu {
LeftMenuViewController *left=[[LeftMenuViewController alloc]init];
[left removeFromParentViewController];
//slide the content view to the left to hide the menu
[UIView animateWithDuration:.5 animations:^{
self.navigationController.navigationBar.frame = CGRectMake(0, self.navigationController.navigationBar.frame.origin.y, self.navigationController.navigationBar.frame.size.width, self.navigationController.navigationBar.frame.size.height);
[view_Home setFrame:CGRectMake(0, view_Home.frame.origin.y, view_Home.frame.size.width, view_Home.frame.size.height)];
}completion:^(BOOL finished)
{
for(UIView *view in [view_mainHome subviews]){
[view removeFromSuperview];
}
}];
}
答案 0 :(得分:0)
每次使用alloc init调用VC时,它都会生成该对象的新副本,而不是针对您已有的对象。如果要在父VC上调用函数,可以使用通知中心向其发送消息,也可以存储对它的引用。然后确保在定位现有对象时不使用“alloc init”,因为这不会影响可见视图。