1. 程式人生 > >iOS介面跳轉與返回程式碼實現(Objective-C)

iOS介面跳轉與返回程式碼實現(Objective-C)

       我們知道,現在的介面設計與跳轉都可以使用storyboard和segue來實現。但是有些專案組或者boss不喜歡這樣簡單視覺化的形式,非要用程式碼來實現整個UI的設計,與介面跳轉的邏輯,當然原因有各種。所以,現在我來為大家來簡單實現如何使用程式碼來構建UI控制元件並進行跳轉。程式碼下載地址https://github.com/chenyufeng1991/JumpAndNavigationCode    中的01資料夾下 。

       該專案的第一個介面就是storyboard自動建立的介面,第二個介面是自己建立的帶nib檔案的ViewController。但是在nib和storyboard中不使用任何的拖拽控制元件。

ViewController.m中實現程式碼如下:

#import "ViewController.h"
#import "MainViewController.h"

@interface ViewController ()

@property(strong,nonatomic) UIButton *button;

@end

@implementation ViewController

- (void)viewDidLoad {
  [super viewDidLoad];
  
  self.button = [[UIButton alloc] initWithFrame:CGRectMake(0, 100, [[UIScreen mainScreen] bounds].size.width, 20)];
  [self.button setTitle:@"跳轉" forState:UIControlStateNormal];
  [self.button setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
  [self.view addSubview:self.button];
  
  [self.button addTarget:self action:@selector(clickMe:) forControlEvents:UIControlEventTouchUpInside];
  
}

//現在我要做的是為頁面增加NavagationBar,是通過程式碼新增的,使之在頁面跳轉的時候起作用;

-(void)clickMe:(id)sender{

  [self presentViewController:[[MainViewController alloc] init] animated:true completion:^{
    //跳轉完成後需要執行的事件;
  }];
  
  
}



@end


MainViewController.m實現如下,這是第二個介面,對應了nib檔案。

#import "MainViewController.h"

@interface MainViewController ()

@property(strong,nonatomic) UIButton *backButton;

@end

@implementation MainViewController

- (void)viewDidLoad {
    [super viewDidLoad];
  
  self.backButton = [[UIButton alloc] initWithFrame:CGRectMake(0, 100, [[UIScreen mainScreen] bounds].size.width, 20)];
  [self.backButton setTitle:@"返回" forState:UIControlStateNormal];
  [self.backButton setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
  [self.view addSubview:self.backButton];
  
  [self.backButton addTarget:self action:@selector(backButtonPressed:) forControlEvents:UIControlEventTouchUpInside];
  
  
  
  
}

- (void)backButtonPressed:(id)sender{

  [self dismissViewControllerAnimated:true completion:^{
    //返回後執行的事件;
  }];
}



@end

實現效果就是兩個介面之間可以進行跳轉和返回。按鈕和實現方式都是通過純程式碼實現的,沒有在storyboard和nib中新增一個控制元件。作為一個合格的iOS工程師,我們既要學會目前流行的storyboard,也要學會使用程式碼構建UI。