iOS:由于一些奇怪的原因,动画正在影响我的其他View Controller

时间:2013-10-19 15:37:14

标签: iphone ios objective-c uitableview animation

我不知道为什么我的NewViewController会获取我的ViewController的动画。我的NewViewController.xib中的所有内容都表现得很奇怪。例如,我的UITableView在动画和其他对象中都很容易弹出。我检查了我的NewViewController,它没有与我的ViewController连接。如果您对如何阻止这一点有任何建议,我将不胜感激。

ViewController.m

 - (void)viewDidLoad
 {
[super viewDidLoad];
 [self start];
  }

 -(void)start{
CGContextRef *imageContext = UIGraphicsGetCurrentContext();
[UIView beginAnimations:nil context:imageContext];
[UIView setAnimationCurve:UIViewAnimationCurveEaseIn];
[UIView setAnimationDelegate:self];
image.alpha = 1;
image1.alpha = 1;
[self performSelector:@selector(change) withObject:nil afterDelay:3];
  }


 -(void)change{
  NewViewController *newViewController = [[NewViewController alloc]init];
  [self.navigationController pushViewController:newViewController animated:NO];
  }

2 个答案:

答案 0 :(得分:0)

在视图控制器的动画期间推送新的视图控制器。因此,您获得影响新控制器的结果并不奇怪。您需要将新的视图控制器创建和演示移出动画。

另外,我没有看到你在哪里调用[UIView commitAnimations]来正确完成动画块。

此外,您可能正在调用viewDidLoad中的界面动画,当视图可能尚未显示时,再次出现不可预测的结果。相反,您应该在viewDidAppear中调用初始动画。

答案 1 :(得分:0)

为了澄清一下,你的NewViewController是如何形成的?

听起来你已经为它设置了一个nib文件,但是然后在你的代码中用init调用它,而不是initWithNibNamed。

听起来你也可能已经在你的navigationController的nib中包含了一个NewViewController实例,虽然我不能确定你的语句是否属于这种情况。

总而言之,当您只需要执行一次时,看起来您可能正在使用2种或3种不同的方式来创建NewViewController的实例。

我会走出困境,并假设你想使用自己设计的自定义NewViewController.xib文件。如果是这样,你想要这样做:

  1. 确保导航控制器中没有带有一类NewViewController的ViewController对象。

  2. 从技术上讲,您不必将属性或实例变量添加到NewViewController类型的类中,因为一旦您推送,navigationController将接管保留计数,但您很可能会想要将NewViewController限定为你的类,以便以后处理事件/重用等等......

  3. 当你创建一个NewViewController的实例时,从这个nib实例化它(注意我假设你已经声明了@property(强,非原子)NewViewController * nvc;)

  4. -

    nvc = [[NewViewController alloc] initWithNibNamed:@"nameOfNibGoesHereWithoutAppendingDotXib" bundle:[NSBundle mainBundle]];
    

    现在,当newViewController加载时,您应该看到它的行为与您在笔尖中的布局一样。

    我在这里做了很多假设,随时根据需要纠正并重新指导你的问题,我们会尽力帮助你!