0

アプリにサイドバーがipadあり、アニメーションを実行しているこのメソッド toggleMenu がある場合、別のView Controllerからメソッドを呼び出すと、アニメーションは実行されません。メソッドは正常に実行されますが、アニメーションはありません

その方法は

-(IBAction)toggleMenu
{

[UIView beginAnimations:@"Menu Slide" context:nil];
[UIView setAnimationDuration:0.2];

if(self.contentView.frame.origin.x == 0) //Menu is hidden
{

    NSLog(@"show menu");

    CGRect newFrame = CGRectOffset(self.contentView.frame, self.menuView.frame.size.width, 0.0);
    self.contentView.frame = newFrame;

}
else //Menu is shown
{

    NSLog(@"hide menu");

    [menuTableView reloadData];
    CGRect newFrame = CGRectOffset(self.contentView.frame, -(self.menuView.frame.size.width), 0.0);
    self.contentView.frame = newFrame;

}

[UIView commitAnimations];

}
4

1 に答える 1

1

これを試してみてください。アニメーション化するときは、別のView Controllerから通知を送信する必要があります..

  [[NSNotificationCenter defaultCenter] postNotificationName:@"animationstart"        object:nil];

スライドメニュービューコントローラーで

  -(void)viewDidLoad

{
 [[NSNotificationCenter defaultCenter] removeObserver:self];
 [[NSNotificationCenter defaultCenter] addObserver:self    selector:@selector(toggleMenu) name:@"animationstart" object:nil];

}

- (IBAction)toggleMenu
{
  [UIView beginAnimations:@"Menu Slide" context:nil];
  [UIView setAnimationDuration:0.2];

if(self.contentView.frame.origin.x == 0) //Menu is hidden
{

NSLog(@"show menu");

CGRect newFrame = CGRectOffset(self.contentView.frame, self.menuView.frame.size.width, 0.0);
self.contentView.frame = newFrame;

 }
 else //Menu is shown
 {

NSLog(@"hide menu");

[menuTableView reloadData];
CGRect newFrame = CGRectOffset(self.contentView.frame, -   (self.menuView.frame.size.width), 0.0);
self.contentView.frame = newFrame;

}

[UIView commitAnimations];


}
于 2013-06-13T13:17:32.243 に答える