我不知道为什么我的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];
}
答案 0 :(得分:0)
在视图控制器的动画期间推送新的视图控制器。因此,您获得影响新控制器的结果并不奇怪。您需要将新的视图控制器创建和演示移出动画。
另外,我没有看到你在哪里调用[UIView commitAnimations]
来正确完成动画块。
此外,您可能正在调用viewDidLoad
中的界面动画,当视图可能尚未显示时,再次出现不可预测的结果。相反,您应该在viewDidAppear
中调用初始动画。
答案 1 :(得分:0)
为了澄清一下,你的NewViewController是如何形成的?
听起来你已经为它设置了一个nib文件,但是然后在你的代码中用init调用它,而不是initWithNibNamed。
听起来你也可能已经在你的navigationController的nib中包含了一个NewViewController实例,虽然我不能确定你的语句是否属于这种情况。
总而言之,当您只需要执行一次时,看起来您可能正在使用2种或3种不同的方式来创建NewViewController的实例。
我会走出困境,并假设你想使用自己设计的自定义NewViewController.xib文件。如果是这样,你想要这样做:
确保导航控制器中没有带有一类NewViewController的ViewController对象。
从技术上讲,您不必将属性或实例变量添加到NewViewController类型的类中,因为一旦您推送,navigationController将接管保留计数,但您很可能会想要将NewViewController限定为你的类,以便以后处理事件/重用等等......
当你创建一个NewViewController的实例时,从这个nib实例化它(注意我假设你已经声明了@property(强,非原子)NewViewController * nvc;)
-
nvc = [[NewViewController alloc] initWithNibNamed:@"nameOfNibGoesHereWithoutAppendingDotXib" bundle:[NSBundle mainBundle]];
现在,当newViewController加载时,您应该看到它的行为与您在笔尖中的布局一样。
我在这里做了很多假设,随时根据需要纠正并重新指导你的问题,我们会尽力帮助你!