tìm hiểu ios

Ví dụ cho Ủy quyền

Giả sử một đối tượng A gọi một đối tượng B để thực hiện một hành động. Sau khi hành động hoàn thành, đối tượng A cần biết rằng B đã hoàn thành nhiệm vụ và thực hiện hành động cần thiết. Điều này đạt được với sự giúp đỡ của các Ủy quyền.

Các khái niệm chính trong ví dụ trên là:

  • A là một đối tượng đại biểu của B.
  • B sẽ có một tham chiếu của A.
  • A sẽ triển khai các phương thức ủy nhiệm của B.
  • B sẽ thông báo cho A thông qua các phương thức ủy nhiệm.

Các bước tạo đại biểu

Bước 1 – Đầu tiên, tạo một ứng dụng xem duy nhất.

Bước 2 – Sau đó chọn Tệp → Mới → Tệp ..

iOS - Ủy quyền

Bước 3 – Sau đó chọn Objective C Class và nhấp vào Tiếp theo.

Bước 4 – Đặt tên cho lớp, ví dụ, SampleProtocol với lớp con là NSObject như hình dưới đây.

iOS - Ủy quyền

Bước 5 – Sau đó chọn tạo.

Bước 6 – Thêm giao thức vào tệp SampleProtocol.h và mã được cập nhật như sau:

#import <Foundation/Foundation.h>

// Protocol definition starts here 
@protocol SampleProtocolDelegate <NSObject>
@required
- (void) processCompleted;
@end

// Protocol Definition ends here
@interface SampleProtocol : NSObject {
   // Delegate to respond back
   id <SampleProtocolDelegate> _delegate; 
}
@property (nonatomic,strong) id delegate;

-(void)startSampleProcess; // Instance method
@end
Bước 7 - Thực hiện phương thức phiên bản bằng cách cập nhật tệp SampleProtocol.m như hình dưới đây.
#import "SampleProtocol.h"

@implementation SampleProtocol

-(void)startSampleProcess {
   [NSTimer scheduledTimerWithTimeInterval:3.0 target:self.delegate 
	selector:@selector(processCompleted) userInfo:nil repeats:NO];
}
@end

Bước 8 – Thêm UILabel trong ViewController.xib bằng cách kéo nhãn từ thư viện đối tượng vào UIView như hình dưới đây.

Thêm UILabel

Bước 9 – Tạo IBOutlet cho nhãn và đặt tên là myLabel và cập nhật mã như sau để áp dụng SampleProtocolDelegate trong ViewController.h

#import <UIKit/UIKit.h>
#import "SampleProtocol.h"

@interface ViewController : UIViewController<SampleProtocolDelegate> {
   IBOutlet UILabel *myLabel;
}
@end

Bước 10 Thực hiện phương thức ủy nhiệm, tạo đối tượng cho SampleProtocol và gọi phương thức startSampleProcess. Tệp ViewController.m được cập nhật như sau:

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
   [super viewDidLoad];
   SampleProtocol *sampleProtocol = [[SampleProtocol alloc]init];
   sampleProtocol.delegate = self;
   [myLabel setText:@"Processing..."];
   [sampleProtocol startSampleProcess];
   // Do any additional setup after loading the view, typically from a nib.
}

- (void)didReceiveMemoryWarning {
   [super didReceiveMemoryWarning];
   // Dispose of any resources that can be recreated.
}

#pragma mark - Sample protocol delegate
-(void)processCompleted {
   [myLabel setText:@"Process Completed"];
}
@end

Bước 11 Chúng ta sẽ thấy một kết quả như sau. Ban đầu, nhãn hiển thị “đang xử lý …”, được cập nhật khi phương thức ủy nhiệm được gọi bởi đối tượng SampleProtocol.

iOS – Phần tử giao diện người dùng

Phần tử giao diện người dùng là gì?

Yếu tố giao diện người dùng là những yếu tố trực quan mà chúng ta có thể thấy trong các ứng dụng của mình. Một số phần tử này phản ứng với các tương tác của người dùng như nút, trường văn bản và những phần tử khác mang tính thông tin như hình ảnh, nhãn.

Làm cách nào để thêm các phần tử giao diện người dùng?

Chúng tôi có thể thêm các phần tử giao diện người dùng cả trong mã và với sự trợ giúp của trình tạo giao diện. Tùy theo nhu cầu mà chúng ta có thể sử dụng một trong hai.

Trọng tâm của chúng tôi

Chúng tôi sẽ tập trung nhiều hơn vào việc thêm các phần tử giao diện người dùng thông qua mã trong các ứng dụng của chúng tôi. Việc sử dụng trình tạo giao diện rất đơn giản và dễ hiểu, chúng ta chỉ cần kéo và thả các phần tử giao diện người dùng.

Cách tiếp cận của chúng ta

Chúng tôi sẽ tạo một ứng dụng iOS đơn giản và sử dụng nó để giải thích một số yếu tố giao diện người dùng.

Bước 1 – Tạo ứng dụng Viewbased như chúng ta đã làm trong ứng dụng iOS Đầu tiên.

Bước 2 – Chúng tôi sẽ chỉ cập nhật các tệp ViewController.h và ViewController.m.

Bước 3 – Sau đó, chúng tôi thêm một phương thức vào tệp ViewController.m cụ thể để tạo phần tử giao diện người dùng.

Bước 4 – Chúng tôi sẽ gọi phương thức này trong phương thức viewDidLoad của chúng tôi.

Bước 5 – Các dòng mã quan trọng đã được giải thích trong mã với chú thích dòng đơn phía trên các dòng đó.

Danh sách các phần tử giao diện người dùng

Các phần tử cụ thể của giao diện người dùng và các chức năng liên quan của chúng được giải thích bên dưới:

Sr.No.Các yếu tố cụ thể của giao diện người dùng
1Trường văn bản Nó là một phần tử giao diện người dùng cho phép ứng dụng nhận được thông tin đầu vào của người dùng.
2Kiểu đầu vào – Trường văn bản Chúng tôi có thể đặt loại đầu vào mà người dùng có thể cung cấp bằng cách sử dụng thuộc tính bàn phím của UITextField.
3nút Nó được sử dụng để xử lý các hành động của người dùng.
4Nhãn mác Nó được sử dụng để hiển thị nội dung tĩnh.
5Thanh công cụ Nó được sử dụng nếu chúng ta muốn thao tác một thứ gì đó dựa trên chế độ xem hiện tại của chúng ta.
6Thanh trạng thái Nó hiển thị thông tin chính của thiết bị.
7Thanh điều hướng Nó chứa các nút điều hướng của bộ điều khiển điều hướng, là một chồng các bộ điều khiển chế độ xem có thể được đẩy và bật lên.
số 8Thanh tab Nó thường được sử dụng để chuyển đổi giữa các nhiệm vụ con, chế độ xem hoặc mô hình khác nhau trong cùng một chế độ xem.
9Xem hình ảnh Nó được sử dụng để hiển thị một hình ảnh hoặc chuỗi hình ảnh đơn giản.
10Chế độ xem cuộn Nó được sử dụng để hiển thị nội dung nhiều hơn diện tích màn hình.
11Bảng xem Nó được sử dụng để hiển thị danh sách dữ liệu có thể cuộn trong nhiều hàng và phần.
12Chế độ xem tách Nó được sử dụng để hiển thị hai ngăn với ngăn chính kiểm soát thông tin trên ngăn chi tiết.
13Chế độ xem văn bản Nó được sử dụng để hiển thị danh sách thông tin văn bản cuộn có thể chỉnh sửa tùy chọn.
14Xem chuyển đổi Nó giải thích các chuyển đổi chế độ xem khác nhau giữa các chế độ xem.
15Bộ chọn Nó được sử dụng để hiển thị để chọn một dữ liệu cụ thể từ một danh sách.
16Công tắc Nó được sử dụng như vô hiệu hóa và kích hoạt cho các hành động.
17Thanh trượt Nó được sử dụng để cho phép người dùng thực hiện các điều chỉnh đối với một giá trị hoặc quá trình trong một phạm vi giá trị được phép.
18Cảnh báo Nó được sử dụng để cung cấp thông tin quan trọng cho người dùng.
19Biểu tượng Nó là một đại diện hình ảnh được sử dụng cho một hành động hoặc mô tả một cái gì đó liên quan đến ứng dụng.

iOS – Trường văn bản

Sử dụng trường văn bản

Trường văn bản là một phần tử giao diện người dùng cho phép ứng dụng nhận thông tin đầu vào của người dùng. Một trường UIText được hiển thị bên dưới.

iOS - Trường văn bản

Thuộc tính quan trọng của trường văn bản

  • Văn bản trình giữ chỗ được hiển thị khi không có người dùng nhập
  • Văn bản bình thường
  • Loại tự động sửa
  • Loại bàn phím
  • Loại khóa trả lại
  • Xóa chế độ nút
  • Căn chỉnh
  • Ủy quyền

Cập nhật thuộc tính trong xib

Bạn có thể thay đổi thuộc tính trường văn bản trong xib trong trình kiểm tra thuộc tính trong khu vực tiện ích (bên phải của Cửa sổ).

Cập nhật thuộc tính trong xib

Đại biểu trường văn bản

Chúng ta có thể đặt ủy quyền trong trình tạo giao diện bằng cách nhấp chuột phải vào UIElement và kết nối nó với chủ sở hữu tệp như được hiển thị bên dưới.

Đại biểu trường văn bản

Các bước sử dụng đại biểu

Bước 1 – Đặt đại biểu như trong hình trên.

Bước 2 – Thêm đại biểu mà lớp của bạn phản hồi.

Bước 3 – Triển khai các đại biểu trường văn bản, các đại biểu trường văn bản quan trọng như sau:

- (void)textFieldDidBeginEditing:(UITextField *)textField 
- (void)textFieldDidEndEditing:(UITextField *)textField 

Bước 4 – Như tên cho thấy, hai đại biểu trên được gọi khi chúng ta bắt đầu chỉnh sửa trường văn bản và kết thúc chỉnh sửa tương ứng.

Bước 5 – Đối với các đại biểu khác, vui lòng tham khảo tài liệu tham khảo Giao thức UITextDelegate.

Mã mẫu và các bước

Bước 1 – Chúng tôi sẽ sử dụng ứng dụng mẫu được tạo cho các phần tử giao diện người dùng.

Bước 2 – Lớp ViewController của chúng tôi sẽ sử dụng UITextFieldDelegate và tệp ViewController.h của chúng tôi được cập nhật như sau:

#import <UIKit/UIKit.h>

// You can notice the adddition of UITextFieldDelegate below
@interface ViewController : UIViewController<UITextFieldDelegate>

@end

Bước 3 – Sau đó, chúng tôi thêm một phương thức addTextField vào tệp ViewController.m của chúng tôi.

Bước 4 – Sau đó, chúng tôi gọi phương thức này trong phương thức viewDidLoad của chúng tôi.Bước 5 – Cập nhật viewDidLoad trong ViewController.m như sau:

#import "ViewController.h"
@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
   [super viewDidLoad];
   //The custom method to create our textfield is called
   
   [self addTextField];
   // Do any additional setup after loading the view, typically from a nib.
}

- (void)didReceiveMemoryWarning {
   [super didReceiveMemoryWarning];
   // Dispose of any resources that can be recreated.
}

-(void)addTextField {
   // This allocates a label 
   UILabel *prefixLabel = [[UILabel alloc]initWithFrame:CGRectZero];
   
   //This sets the label text
   prefixLabel.text =@"## ";
   
   // This sets the font for the label
   [prefixLabel setFont:[UIFont boldSystemFontOfSize:14]];
   
   // This fits the frame to size of the text
   [prefixLabel sizeToFit];
	
   // This allocates the textfield and sets its frame
   UITextField *textField = [[UITextField  alloc] initWithFrame:
   CGRectMake(20, 50, 280, 30)];
   
   // This sets the border style of the text field 
   textField.borderStyle = UITextBorderStyleRoundedRect;
   textField.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter;
   [textField setFont:[UIFont boldSystemFontOfSize:12]];
   
   //Placeholder text is displayed when no text is typed
   textField.placeholder = @"Simple Text field";
   
   //Prefix label is set as left view and the text starts after that
   textField.leftView = prefixLabel;
  
   //It set when the left prefixLabel to be displayed
   textField.leftViewMode = UITextFieldViewModeAlways;
  
   // Adds the textField to the view.
   [self.view addSubview:textField];
  
   // sets the delegate to the current class
   textField.delegate = self;
}

// pragma mark is used for easy access of code in Xcode
#pragma mark - TextField Delegates

// This method is called once we click inside the textField
-(void)textFieldDidBeginEditing:(UITextField *)textField {
   NSLog(@"Text field did begin editing");
}

// This method is called once we complete editing
-(void)textFieldDidEndEditing:(UITextField *)textField {
   NSLog(@"Text field ended editing");
}

// This method enables or disables the processing of return key
-(BOOL) textFieldShouldReturn:(UITextField *)textField {
   [textField resignFirstResponder];
   return YES;
}

- (void)viewDidUnload {
   label = nil;
   [super viewDidUnload];
}
@end

Bước 6 – Khi chúng tôi chạy ứng dụng, chúng tôi sẽ nhận được kết quả sau.

ViewController.h

Bước 7 – Các phương thức ủy quyền được gọi dựa trên hành động của người dùng. Xem kết quả đầu ra của bảng điều khiển để biết khi nào các đại biểu được gọi.

Kiểu nhập – Trường văn bản xem thêm

Trả lời