动画父视图从iOS中的子视图控制器查看控制器视图

时间:2014-06-26 11:38:06

标签: ios iphone objective-c

我在我的应用中添加了类似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];
     }
 }];

}

view Image

1 个答案:

答案 0 :(得分:0)

每次使用alloc init调用VC时,它都会生成该对象的新副本,而不是针对您已有的对象。如果要在父VC上调用函数,可以使用通知中心向其发送消息,也可以存储对它的引用。然后确保在定位现有对象时不使用“alloc init”,因为这不会影响可见视图。