使用initWithNibName时可以查看动画

时间:2010-03-05 00:43:01

标签: iphone xcode

我正试图为我的新观点制作动画,因为它们进来或出去似乎无法弄清楚如何做到这一点。我尝试了几种不同的东西无济于事。以下是我如何加载它们的代码:

 (void) displayView:(int)intNewView {
NSLog(@"%i", intNewView);

[self.currentView.view removeFromSuperview];

//[self.currentView.view removeFromSuperview];
[self.currentView release];
switch (intNewView) {
    case 1:
        self.currentView = [[FirstViewController alloc] initWithNibName:@"FirstView" bundle:nil];
        break;
    case 2:
        self.currentView = [[SecondViewController alloc] initWithNibName:@"SecondView" bundle:nil];
        break;
    case 3:
        self.currentView = [[ThirdViewController alloc] initWithNibName:@"ThirdView" bundle:nil];
        break;
    case 4:
        self.currentView = [[FourthViewController alloc] initWithNibName:@"FourthView" bundle:nil];
        break;
}

[self.view addSubview:self.currentView.view];

}

以这种方式加载它们是否甚至可以让它们具有动画效果?

一如既往,提前感谢任何帮助。

...地理位置

2 个答案:

答案 0 :(得分:0)

如果我说得对,“自我”是你的导航控制器,你可以试试 [self pushViewController:currentView animated:YES];

答案 1 :(得分:0)

您可以通过这种方式进行视图转换。

  1. 不删除当前视图,因此请删除这些行
    
    [self.currentView.view removeFromSuperview];
    [self.currentView release];
    
  2. 加载代码是可以的,但是分配新加载的控制器,而不是self.currentView,让我们说
    
    UIViewController *newVC = [[UIViewController alloc] initWithNibName:@"" bundle:nil];
    
  3. 现在基于视图转换设置一个简单的动画(我将使用基于块的iOS 4.x方法,但您仍然可以使用旧式非块方法来实现向后兼容):
    
    [UIView transitionWithView:self.view
               duration:0.5
               options:UIViewAnimationOptionTransitionFlipFromLeft
               animations:^{ [self.currentView.view removeFromSuperview]; [self.view addSubview:newView.view]; }
               completion:NULL];
    
    请注意,基于3.x的方法,没有块,需要在运行动画之前在视图层次结构中插入newView.view,这只是在索引0和索引1的视图之间切换,并且在动画的视图中
  4. 4.最后,将currentView分配给新视图:
    
    self.currentView=newView;
    
  5. 请不要尝试剪切和粘贴这些代码行:它们尚未经过检查,因此请将此过程视为有效,但在编写代码时要小心。