萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 手機 >  >> 手機應用 >> iPhone

iOS 開發實戰:純代碼創建自定義按鈕並實現模態視圖跳轉與返回

雖然 Storyboard 拖線最快,但代碼控制視圖跳轉更靈活。本文示範從 A 控制器點擊按鈕模態彈出 B,B 點擊返回按鈕釋放回 A 的完整流程。

核心代碼結構

A 控制器:創建按鈕並呈現 B

- (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];
}

B 控制器:返回按鈕釋放自身

- (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 中清理;
  • iOS 5+ 推薦使用帶 completion 區塊的 dismissViewControllerAnimated:completion:。

純代碼方式讓跳轉邏輯集中、可控,適合動態決定跳轉目標的場景。

copyright © 萬盛學電腦網 all rights reserved