2011-03-01 56 views

回答

2

如果妳想要隐藏的ViewController的看法尝试

viewController.view.hidden = YES; 
5

你什么究竟意味着什么?

的UIViewController本身不是“看得见” ... 但其视图(正常的UIView),所以只要改变它的视图中隐藏属性格式为YES:

yourUIViewController.view.hidden = YES; 
+0

使用这种方式你可以看到视图控制器的背景,因为你只隐藏了视图。所以,如果我有viewcontroller A,并且我用“presentViewController:animated:completion:”viewcontroller B打开,我如何看到A而不关闭B? – Pol 2016-09-30 12:25:18

+0

对不起,但我真的很想念为什么你应该提出一个ViewController,如果你不想看到它......如果你需要一个该控制器的实例只是alloc + init它并使用它,而不使用方法来将其视图添加到将其添加到UINavigationController堆栈中的超级视图... – meronix 2016-10-03 08:21:54

+0

,因为在某些情况下,我必须隐藏呈现的viewController。我无法解释它,因为我不能失去内部元素的状态,在将来再次呈现它 – Pol 2016-10-03 08:26:27

2

使用动画,从控制器(我认为你有一个实现UIViewController协议的类)。

在UIViewController类声明,这样做的方法:

- (void) hide 
{ 
    [UIView animateWithDuration:0.2 //begin animation 
          delay:0.1 
         options:UIViewAnimationCurveEaseIn 
        animations:^ 
        { 
        // This subview is initialized at the top of the screen 
        [mySubview setFrame:CGRectOffset([mySubview frame], 0, -mySubview.frame.size.height)]; 
        // Do the same for Every other subview you want to animate off 
        } 
        completion:nil]; 
} 

这将动画的意见出来的画面。它会给你一个更好(平滑)的效果,而不是简单地让它们“隐藏”。

从你的超级视图中,你只需调用你的控制器隐藏方法,一切都将顺利消失!

注意:您也可以使用其他动画曲线...列表和说明,可以在 “UIViewAnimationCurve” 中找到here

0
[viewController.view setHidden:YES]; 
1

代码隐藏当前的UIViewController

[自dismissViewControllerAnimated:YES完成:零];

相关问题