Ios 当模式视图被取消时,ViewDidEmbeen未被调用

Ios 当模式视图被取消时,ViewDidEmbeen未被调用,ios,objective-c,iphone,viewcontroller,modalviewcontroller,Ios,Objective C,Iphone,Viewcontroller,Modalviewcontroller,首先,我创建一个MainViewController。然后在MainViewController中,我会 [self presentViewController:modalViewController animated:YES completion:nil]; modalViewController.modalPresentationStyle = UIModalPresentationFormSheet; 当我关闭modalViewController时, 在iPhone(iPhone 6+

首先,我创建一个MainViewController。然后在MainViewController中,我会

[self presentViewController:modalViewController animated:YES completion:nil];
modalViewController.modalPresentationStyle = UIModalPresentationFormSheet;
当我关闭modalViewController时, 在iPhone(iPhone 6+除外)上,调用MainViewController的ViewDidDisplay。 在iPad和iPhone 6+上,不会调用MainViewController的viewDidAppear


当modalViewController被解除时,逻辑将调用一个函数。我如何知道modalViewController何时被解除。

苹果提供的视图控制器执行此操作的方式是在显示的视图控制器上有一个委托,该委托在视图控制器请求关闭时调用。然后,演示者将负责解除控制器,并因此知道何时进行任何相关清理(动画前后)。

解除模式视图控制器时,可以使用代理调用MainViewController中的函数。例如:

MainViewController.h:

@protocol YourDelegate <NSObject>
- (void)someFunction;
@end

@interface MainViewController : UIViewController <YourDelegate>

@end
@interface ModalViewController : UIViewController
@property (nonatomic, weak) id<YourDelegate> delegate;
@end
ModalViewController.h:

@protocol YourDelegate <NSObject>
- (void)someFunction;
@end

@interface MainViewController : UIViewController <YourDelegate>

@end
@interface ModalViewController : UIViewController
@property (nonatomic, weak) id<YourDelegate> delegate;
@end

尝试使用其他“modalPresentationStyle”。那么它能工作吗?这是用户体验所要求的。我无法更改。您正在呼叫:[超级视图显示:动画];是的,我打过电话。我认为问题在于,在iPhone上,模态视图占据了整个屏幕,而在iPad上,模态视图只在中间。我试着重现你的场景,如下所示。对我来说,它在所有设备上正常工作。请参考一下。希望有帮助。如果项目使用故事板+分段怎么办?我的意思是,segue是在情节提要中定义的,而不是在代码中定义的