Cách xử dụng file xib trong objective c

Trong hướng dẫn này mình sẽ hướng dẫn các bạn tạo file xib thiết kế giao diện và điều khiển các màn hình …

file xib là gì?

file xib là file thiết kế giao diện người dùng .  Chứa một cảnh trong game hoặc màn hình phần mềm. Khác MainStoryboard gồm tất cả các màn hình và liên kết giao diện trực quan hơn về liên kết. Tuy thế một dự án quá lớn sẽ dẫn đến  các liên kết nhìn rất rối mắt , khó quản lý các luồng . Lúc đó file Xib phát huy tác dụng của mình dễ quản lý các luồng.

Hơn nữa đối với các bạn máy yếu load MainStoryboard sẽ phải load tất cả màn hình sẽ hay bị lác. còn file xib chỉ khi nào ta gọi file nào thì file đó mới được gọi.

Chúng ta cùng thiết kế nào!

Chúng ta chỉ load file xib ,Ta xoá file MainStoryboard.

Tạo một file xib mới.New file lựa chọn vẽ!Ta sẽ tạo được một file xib lưu ý đặt tên file tý chúng ta sẽ gọi theo tên file.
 Screen Shot 2016-05-13 at 14.00.08

 

Screen Shot 2016-05-13 at 14.02.19

 

Như vậy ta đã tạo file xib thành công !

Thiết kế giao diện nào:

Kéo vào một label để hiển thị ,và 2 nút button để bắt sự kiện .Để bắt sự kiện gì mình sẽ giới thiệu phía dưới.

Screen Shot 2016-05-13 at 14.04.36

Đây mới có giao diện cơ bản tuy nhiên chúng ta chưa thể chạy được Do chưa đăng ký class nào quản lý View này Và chưa đăng ký xem file Xib này!!!

Ok!

click vào File’s Owner : xuất hiện ô kết nối class như hình bên dưới sau đó chọn tên class quản lý, xcode sẽ tự động kết nối:

Screen Shot 2016-05-13 at 14.09.17 Screen Shot 2016-05-13 at 14.09.38

 

Kết nối ViewController để quản lý file Xib.

phải chuột vào File’s Owner, kéo View vào màn hình chúng ta vừa tạo ra!

Screen Shot 2016-05-13 at 14.13.09

Kết nối View với màn hình Xib.

Ok như thế chúng ta đã kết nối thành công giao diện !!!Tiếp theo đăng ký load file Xib ngay khi ứng dụng khởi chạy!

Vào file AppDelegate.m thêm đoạn mã sau!!!

#import "tên View controller vừa tạo ra để quản lý màn hình chúng ta thiết kế.h"

Ở đây:

#import "ViewController.h"

trong đoạn mã mình đã giải thích rất cụ thể!Cách đăng ký màn hình khởi động như thế nào!Và kết nối Navigation như thế nào!

 

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    // dang ky fullScreen
    self.window=[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    // dang ky viewcontroller nao mac dinh la file xib Viewcontroller!!!
    //uiViewcontroller quan ly man hinh nao
    UIViewController *controller=[[ViewController alloc] initWithNibName:@"ViewController" bundle:nil];
    // đăng ký gốc navigation nam tren viewcontroller nào
    UINavigationController *navigation=[[UINavigationController alloc] initWithRootViewController:controller];
    // dang ky man hinh dau tien cua window
    self.window.rootViewController=navigation;// các bạn có thể truyền trược tiếp controller vào tuy thế không có thanh navigation!
    // cho phep hien thi dau tien
    [self.window makeKeyWindow];
    return YES;
}

Trước khi biên dịch ta vào grneral chọn launchScreen!

cho file launchScreen! chạy đầu tiên để giới thiệu xong mới đến file xib.!!

Screen Shot 2016-05-13 at 14.29.15

 

Biên dịch và chạy thử!!!

Ta sẽ được kết quả như sau!

Screen Shot 2016-05-13 at 14.34.15

Tiếp theo chúng ta cần thêm các ViewController khác !!! và điều hướng chúng!

ánh xạ label sang class quản lý chúng. label để phân biệt xem đó là màn hình  nào.

@property (weak, nonatomic) IBOutlet UILabel *labelXib;

Thêm 1 biến đếm để phân biệt màn hình xib nào khi hiển thị lên label!

@property (nonatomic, assign)int number;

Thêm đoạn mã sau để settext cho label !

- (void)viewDidLoad {
    [super viewDidLoad];
    
    self.labelXib.text=[[NSString alloc] initWithFormat:@"this is Xib %d",self.number];
}

Ánh xạ action cho nút touch up inside:và thêm đoạn mã sau!

- (IBAction)touchUpInside:(id)sender {
    ViewController *controller=[[ViewController alloc] init];
    
    controller.number=self.number+1;
    
    [self.navigationController pushViewController:controller animated:YES];

}

Tạo một ViewController mới. ViewController tăng biến đếm lên 1 .

cuối cùng dùng push để hiển thị Viewcontroller vào!…

Screen Shot 2016-05-13 at 14.59.33

 

Tuy nhiên Khi chúng ta không muốn back lại và muốn hiện full màn hình thì ta dùng phương pháp presentViewControler!!!

- (IBAction)prsent:(id)sender {
    ViewController *controller=[[ViewController alloc] init];
    
    controller.number=self.number+1;
    
    [self presentViewController:controller animated:YES completion:nil];
}

 

 

Screen Shot 2016-05-13 at 15.02.07

 

 

Có gì trong phần tiếp theo :

Mình sẽ hướng dẫn các bạn Thiết kế đa ngôn ngữ cho App!!!

  • Nếu các bạn muốn biết thêm các kỹ thuật khác về ios, các bạn có thể tham khảo thêm các khóa học ios tại đây.

Add a Comment

Your email address will not be published. Required fields are marked *