@walle84 给出的解决方案很棒……但不是 Unwind Segue 解决方案。如果您想使用真正的 Unwind Segues,请按照此步骤逐步操作。
在您的 FirstViewController.m 文件中,添加一个 -reset: 方法,以便您的代码如下所示:
#import "FirstViewController.h"
@interface FirstViewController ()
@end
@implementation FirstViewController
-(IBAction)reset:(UIStoryboardSegue *)segue {
//you can do stuff here, if necessary
//popToRootViewControllerAnimated doesn't allow it
NSLog(@"Back to FirstViewController");
}
- (void)viewDidLoad {
[super viewDidLoad];
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
}
@end
在您的 ThirdViewController.m 中,设置您的 -alertView:clickedButtonAtIndex: 方法,使您的代码如下所示:
#import "ThirdViewController.h"
@interface ThirdViewController () <UIAlertViewDelegate>
@end
@implementation ThirdViewController
- (IBAction)buttonPressed:(id)sender {
UIAlertView *message = [[UIAlertView alloc] initWithTitle:@"MyApp"
message:@"Do you want to reset to FirstViewController?"
delegate:self
cancelButtonTitle:@"Cancel"
otherButtonTitles:nil];
[message addButtonWithTitle:@"Perform Unwind"];
[message show];
}
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex {
if (buttonIndex == 1) {
[self performSegueWithIdentifier:@"myUnwindSegue" sender:self];
}
}
- (void)viewDidLoad {
[super viewDidLoad];
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
}
@end
然后,在您的 Storyboard 中,选择您的 ThirdViewController 场景,单击 Third View Controller 按钮并将其拖动到 Exit 按钮(见下图)。将出现一个弹出窗口。选择其中的Reset: 链接。
完成后,选择您的 unwind segue 按钮(见下图),然后在 Attributes Inspector 中将其名称设置为“myUnwindSegue”(见下图)。
如果您想了解更多关于 Unwind Segues 的信息,可以观看 WWDC 2012 会议视频“在您的应用中采用故事板”[开始于 38 分钟]。