Oua*_*den 26 iphone objective-c ios
viewwillappear解雇后如何打电话modalviewcontroller?
有任何想法,因为在解雇后我viewwillappear没有被称为:
以模态方式呈现我的viewcontroller:// firsviewcontroller:
-(IBAction)AddActivity:(id)sender{
CreateActivity *addViewController = [[CreateActivity alloc] initWithNibName:@"CreateActivity" bundle:nil];
addViewController.delegate = self;
addViewController.modalPresentationStyle = UIModalPresentationFormSheet;
addViewController.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
[self presentModalViewController:addViewController animated:YES];
addViewController.view.superview.frame = CGRectMake(50, 260, 680, 624);
}
Run Code Online (Sandbox Code Playgroud)
// secondvioewcontroller:我创建了一个alertview来解除这个模态视图,但是没有调用viewwillapear:
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex{
if (buttonIndex == 0){
if ([self respondsToSelector:@selector(presentingViewController)]){
[self.presentingViewController dismissModalViewControllerAnimated:YES];
}
else {
[self.parentViewController dismissModalViewControllerAnimated:YES];
}
}
}
Run Code Online (Sandbox Code Playgroud)
rde*_*mar 13
由于您将模态视图控制器呈现为表单,因此呈现控制器的视图永远不会消失,因此viewWillAppear:在解雇后不会调用.如果您希望呈现视图控制器在解雇后处理某些内容,请在模态控制器的viewDidDisappear:方法中调用委托方法.您已经设置了委托,因此我假设您已经拥有委托协议CreateActivity.
顺便说一下,您应该使用非弃用的方法来显示和关闭模态视图控制器.
Tom*_*ift 13
presentModalViewController:animated:/ dismissModalViewControllerAnimated:已弃用.使用presentViewController:animated:completion:/ dismissViewControllerAnimated:completion:代替.
您可以使用完成块来执行dismisal后的任何代码:
- (void) alertView: (UIAlertView *) alertView clickedButtonAtIndex: (NSInteger) buttonIndex
{
if (buttonIndex == 0)
{
MyCustomViewController* mcvc = (MyCustomViewController*)self.presentingViewController;
[self dismissViewControllerAnimated: YES completion: ^{
// call your completion method:
[mcvc someCustomDoneMethod];
}];
}
}
Run Code Online (Sandbox Code Playgroud)
更好的是,如果你正在使用故事板,那么你可以实现一个展开segue并在unwind回调方法中触发你的完成代码.