iOS介面跳轉與返回程式碼實現(Objective-C)
阿新 • • 發佈:2019-01-27
我們知道,現在的介面設計與跳轉都可以使用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。