【问题标题】:Animate parentView controller view from childView Controller in iOS从 iOS 中的子视图控制器动画父视图控制器视图
【发布时间】:2014-06-26 11:38:06
【问题描述】:

我在我的应用程序中添加了 Facebook 之类的菜单。为此,我创建了两个 ViewController。在菜单按钮上单击添加 LeftViewController 作为 childViewController。它工作正常,如图所示。这是我的代码:-

[self addChildViewController:left];

[自我展示菜单];

[view_mainHome addSubview:left.view];

[左 didMoveToParentViewController:self];

现在我调用 ParentViewController 的一个函数来关闭 childViewController 的这个视图,即(LeftViewController)。所以问题是方法被调用但视图不是动画。我调用的方法如下:- ParentViewController * parent = [[ParentViewController alloc]init]; [父 hideLeftMenu];

我在 ParentViewController.m 中的方法如:-

-(void)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];
     }
 }];

}

【问题讨论】:

  • 也许您可以在从超级视图中删除之前对其进行动画处理。 stackoverflow.com/questions/10700933/…
  • 不,我没有删除 parentViewController 的视图。当我点击通知时没有任何反应,只是调用了方法,甚至应用程序也没有崩溃。

标签: ios iphone objective-c


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-14
    • 1970-01-01
    • 2013-06-05
    • 2016-03-31
    • 2018-08-06
    • 2016-10-22
    相关资源
    最近更新 更多