我试图使用iOS 6+(我的应用程序是7.0+)State Preservation来保留从另一个View Controller以模态方式呈现的视图.因此,它具有典型的模态视图控制器解雇模式:
@protocol TNTLoginViewControllerDelegate <NSObject>
- (void)TNTLoginViewControllerDismiss:(TNTLoginViewController *)controller;
@end
@interface TNTLoginViewControllerDelegate : NSObject
@interface TNTLoginViewController : UIViewController
@property (weak, nonatomic) IBOutlet id <TNTLoginViewControllerDelegate> delegate;
- (IBAction)getStarted:(id)sender;
@end
Run Code Online (Sandbox Code Playgroud)
- (IBAction)getStarted:(id)sender
{
// Perform login
...
// Dismiss me
[self.delegate TNTLoginViewControllerDismiss:self];
}
Run Code Online (Sandbox Code Playgroud)
- (void)TNTLoginViewControllerDismiss:(TNTLoginViewController *)controller
{
[self dismissViewControllerAnimated:YES completion:nil];
}
Run Code Online (Sandbox Code Playgroud)
这一切都像一个魅力!直到国家保护.简单地说,我不知道TNTLoginViewController如何保留其委托.我理解为什么它不能:它只是一个指针!所以我尝试了各种派生委托的方法:
viewControllerWithRestorationIdentifierPath:coder:并没有帮助我指出我具体呈现的View Controller.TNTLogingViewControllerDelegate>其标题中的协议.这可能是一个单独的问题,或者可能不允许这样做.application:viewControllerWithRestorationIdentifierPath:coder:返回一个模态视图控制器,其委托设置为我呈现的View Controller.我必须能够从App Delegate派生出VC,但它可能有效.我现在要和#3一起去,但如果有更好的解决方案,有人可以推荐,我会很激动.
设置会产生类似的问题: