カスタム UIActionSheet (ViewController で構成される) を実装しようとしています
- (IBAction)ShowMenu:(id)sender
{
[self.navigationController.view addSubview:self.menuViewController.view];
[self.menuViewController setTest:YES];
[self.menuViewController viewWillAppear:YES];
}
ここで MenuViewController には、選択するオプションがほとんどないテーブルビューがあります。選択した後、それぞれの ViewController を開きます。menu1 をクリックしてから menu1ViewController を開いたところ、正常に動作したとします。このviewControllerを閉じると、dismissViewControllerが呼び出されます。
そしてmenuViewControllerで、menuviewControllerでアニメーション化するコードを下に書きましたが、正常に動作します。
ただし、MenuView の親は TestViewController であり、その内部では、menuviewController がアニメーション化されたときに関数 viewdidAppear が呼び出されません。
それが私の問題です
このコードを使用して、menuViewController で下にアニメーション化しています
- (void) slideOut {
[UIView beginAnimations:@"removeFromSuperviewWithAnimation" context:nil];
// Set delegate and selector to remove from superview when animation completes
[UIView setAnimationDelegate:self];
[UIView setAnimationDidStopSelector:@selector(animationDidStop:finished:context:)];
// Move this view to bottom of superview
CGRect frame = self.menusheet.frame;
frame.origin = CGPointMake(0.0, self.view.bounds.size.height);
self.menusheet.frame = frame;
[UIView commitAnimations];
}
// Method called when removeFromSuperviewWithAnimation's animation completes
- (void)animationDidStop:(NSString *)animationID finished:(NSNumber *)finished context:(void *)context {
if ([animationID isEqualToString:@"removeFromSuperviewWithAnimation"]) {
[self.view removeFromSuperview];
}
}
MenuViewController
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
if(m_test)
{
[self slideIn];
m_test = FALSE;
}
else
{
[self slideOut];
}
}