如果我完全误解了这个问题,请原谅我,但您似乎只想在两个视图控制器之间来回进行基本的水平翻转。即使你已经弄清楚了,也许它会帮助其他有同样问题的人。
(1) 在您的故事板(具有 ViewController A 和 B)中,创建一个从 A 到 B 的模态 Segue。给它一个标识符 (showViewControllerB) 并选择 Transition:Flip Horizontal。
我们设置协议和委托:
(2a) 在 ViewControllerB.h 上面添加@interface:
@class ViewControllerB;
@protocol ViewControllerBDelegate
- (void)viewControllerBDidFinish:(ViewControllerB *)controller;
@end
(2b) 将委托添加为属性:
@property (weak, nonatomic) id <ViewControllerBDelegate> delegate;
(3a) 在 ViewControllerB.m 中合成:
@synthesize delegate;
(3b) 并在方法中委托翻转:
- (IBAction)flipBack:(id)sender
{
[self.delegate viewControllerBDidFinish:self];
}
#import "ViewControllerB.h"
(4) 在 ViewControllerA.h 中添加@interface的最顶部和末尾<ViewControllerBDelegate>
(5a) 在 ViewControllerA.m 中添加符合协议的方法:
- (void)viewControllerBDidFinish:(ViewControllerB *)controller
{
[self dismissModalViewControllerAnimated:YES];
}
(5b) 然后在prepareForSegue中设置为delegate:
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([[segue identifier] isEqualToString:@"showViewControllerB"]) {
[[segue destinationViewController] setDelegate:self];
}
}
我希望这回答了你的问题。如果我误解了,请告诉我。