我想實現一個自定義UIActionSheet(由一個視圖控制器的) 我添加了一個視圖控制器作爲一個子視圖我rootView的navigationcontrollerviewWillAppear中不叫
- (IBAction)ShowMenu:(id)sender
{
[self.navigationController.view addSubview:self.menuViewController.view];
[self.menuViewController setTest:YES];
[self.menuViewController viewWillAppear:YES];
}
這裏MenuViewController有tableview有幾個選項可供選擇。選擇後,我打開各自的ViewControllers。假設我點擊了menu1,然後打開menu1ViewController,它工作正常。現在,當我關閉這個viewController時,我打電話給dismissViewController。
和menuViewController我寫的代碼通過menuviewController動畫向下並能正常工作。
但MenuView的父母是TestViewController其內部viewdidAppear不叫的職能時menuviewController動畫下來。
和多數民衆贊成我的問題,
我使用這個代碼由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];
}
}
請格式化代碼,以便其他人可以理解... –
'MenuViewController -viewWillApper :, -viewdidAppear:'代碼嗎? –
它看起來像你TestViewController實際上停留在視圖層次結構(即它是可見的),所以沒有viewWillAppear將被調用。從文檔:viewWillAppear [「通知視圖控制器其視圖即將添加到視圖層次結構」(https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIViewController_Class/Reference/Reference的.html#// apple_ref/OCC/instm/UIViewController中/ viewWillAppear中:) –