【问题标题】:IOS: custom transition for a viewControllerIOS:视图控制器的自定义转换
【发布时间】:2012-05-09 00:00:09
【问题描述】:

我的应用中有这段代码可以为视图控制器进行转换

SecondViewController *second = [[SecondViewController alloc]initWithNibName:@"SecondViewController" bundle:nil];
    [self.view addSubview:second.view];
    [second.view setFrame:CGRectMake(320, 0, 320, 480)];

    [UIView beginAnimations:nil context:nil];
    [UIView setAnimationDuration:0.40]; //the double represents seconds
    [UIView setAnimationDelegate:self];
    [UIView setAnimationCurve:UIViewAnimationCurveEaseOut];
    [second.view setFrame:CGRectMake(0, 0, 320, 480)];
    [UIView commitAnimations];

它工作正常; 但是在第二个视图控制器中,我有这段代码可以让这个视图控制器消失

[UIView beginAnimations:nil context:nil];
    [UIView setAnimationDuration:0.40]; //the double represents seconds
    [UIView setAnimationDelegate:self];
    [UIView setAnimationCurve:UIViewAnimationCurveEaseOut];
    [self.view setFrame:CGRectMake(320, 0, 320, 480)];
    [UIView commitAnimations];

它工作正常,但是释放它的方法是什么,我在哪里可以释放我调用它时分配的这一秒? 如果我写 [self.view removeFromSuperView]??发布了吗??

【问题讨论】:

    标签: ios uiviewcontroller transition


    【解决方案1】:

    您需要将其从 superView 中移除,然后释放您在代码中分配的 SecondViewController。

    SecondViewController *second = [[SecondViewController alloc]initWithNibName:@"SecondViewController" bundle:nil];
    

    因此,由于您拥有此对象,因此您需要释放它。 因此,在隐藏第二个视图并将其从 superView 中删除后,您需要将其释放...

    [second release];
    

    【讨论】:

    • 但我不明白我可以在哪里释放它...因为如果我在第一个动画显示第二个时释放它,当我关闭它时它会说我是一个释放...
    • 隐藏第二个视图(控制器的视图)后需要释放控制器
    • ok...例如在viewwillappear of firstviewcontroller...否?
    • 您需要在隐藏第二个视图后释放它!不是在显示视图之后,否则如果您在第二个视图中有任何按钮/操作,它们会使您的应用程序崩溃(EXC_BAD_ACCESS)
    猜你喜欢
    • 2023-03-05
    • 1970-01-01
    • 2015-01-10
    • 2015-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-13
    相关资源
    最近更新 更多