在呈现之前添加视图控制器视图

时间:2013-01-30 11:50:59

标签: ios modalviewcontroller

以下是我的代码..

TestTemp1ViewController *temp=[[TestTemp1ViewController alloc]init]; 
[self.view addSubview:temp.view];
[self presentModalViewController:temp animated:FALSE];

此代码在iOS 5.0中运行良好,但在iOS 6.0中崩溃。

Crash report: [UIViewController loadViewIfRequired]-- bad excess 

我无法理解为什么这在iOS 6.0中不起作用。大家好,我知道这不是好方法,但我想做的是带有成长和缩小动画的presentviewcontroller。如果我在演出之后这样做,那么我将获得视角控制器的白色背景。

以下是我的代码......

-(void)animateGrowAndShrink:(ViewController *)controller1 {
    //self.view.userInteractionEnabled=NO;
    [self.view addSubview:controller1.view];
    [self presentModalViewController:self.controller animated:FALSE];
    if (dayTimeLineIsShown) {
        //shrink dayTimeLineIsShown=FALSE;
        [UIView beginAnimations:@"animationShrink" context:NULL];
        [UIView setAnimationDuration:.61f];
        controller1.view.transform=CGAffineTransformMakeScale(.01f,.01f);
    } else {
        //expand dayTimeLineIsShown=TRUE;
        controller1.view.transform=CGAffineTransformMakeScale(0.01,0.01);
        [UIView beginAnimations:@"animationExpand" context:NULL];
        [UIView setAnimationDuration:.60f];
        timeLine.view.transform=CGAffineTransformMakeScale(1, 1);
    }
    [UIView setAnimationDelegate:self];
    [UIView setAnimationDidStopSelector:@selector(animationDidStop:finished:context:)];     
    [UIView commitAnimations];
}

-(void)animationDidStop:(NSString *)animationID finished:(BOOL)finished context:(void *)context{
    self.view.userInteractionEnabled=YES;
   if ([animationID isEqualToString:@"animationExpand"]) {
        [self presentModalViewController:self.controller1 animated:FALSE];
    } else {
        self.controller.view.hidden=true;
    }
}.

我正在执行此操作的控制器也以模态方式呈现,如果我移除它然后它在ios 6中工作。任何其他想法实现缩放和收缩。

3 个答案:

答案 0 :(得分:1)

-presentModalViewController-addSubview完全不同,因为它们不应该一起使用。请参阅:When should I use the addSubview method of a view controller?

我认为删除第二行第三行将消除错误。

答案 1 :(得分:0)

您必须提交崩溃报告以获取具体原因的信息。请仔细阅读此链接以了解崩溃原因:
      http://www.raywenderlich.com/23704/demystifying-ios-application-crash-logs

答案 2 :(得分:0)

我设置的演示风格错了..它应该是这样的..

self.modalPresentationStyle = UIModalPresentationCurrentContext;

它应该在当前上下文中。所以,现在呈现的视图控制器视图将在透明背景上绘制而不是在白色背景上,因此在收缩它的视图时,它后面将没有白色背景。