雖然 Storyboard 拖線最快,但代碼控制視圖跳轉更靈活。本文示範從 A 控制器點擊按鈕模態彈出 B,B 點擊返回按鈕釋放回 A 的完整流程。
- (void)viewDidLoad {
[super viewDidLoad];
self.view.backgroundColor = [UIColor groupTableViewBackgroundColor];
UIButton *btn = [UIButton buttonWithType:UIButtonTypeRoundedRect];
btn.frame = CGRectMake(120, 220, 80, 40);
[btn setTitle:@"模態視圖" forState:UIControlStateNormal];
[btn addTarget:self action:@selector(presentB) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:btn];
}
- (void)presentB {
BViewController *bVC = [[BViewController alloc] init];
bVC.modalTransitionStyle = UIModalTransitionStyleCoverVertical; // 可改 FlipHorizontal/CrossDissolve/PartialCurl
[self presentViewController:bVC animated:YES completion:nil];
}
- (void)viewDidLoad {
[super viewDidLoad];
self.view.backgroundColor = [UIColor purpleColor];
UIButton *backBtn = [UIButton buttonWithType:UIButtonTypeRoundedRect];
backBtn.frame = CGRectMake(130, 50, 60, 20);
[backBtn setTitle:@"返回" forState:UIControlStateNormal];
[backBtn addTarget:self action:@selector(dismissSelf) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:backBtn];
}
- (void)dismissSelf {
[self dismissViewControllerAnimated:YES completion:^{
NSLog(@"B 已釋放,回調執行"); // 可在此執行回調邏輯
}];
}
modalTransitionStyle 控制轉場動畫(垂直蓋出/翻轉/淡入淡出/翻頁);dealloc 中清理;dismissViewControllerAnimated:completion:。純代碼方式讓跳轉邏輯集中、可控,適合動態決定跳轉目標的場景。