Tuesday, September 12, 2017

Truyền dữ liệu giữa các class trong lập trình ios (2)

Trong bài này ta sẽ truyền dữ liệu ngược trở về class trước, ở đây là ViewController.swift.
Giả sử sau khi sang class second, ta muốn lấy giá trị người dùng nhập vào textField để chuyển ngược về, ta sẽ làm như sau.
Tại ViewController.swift, thêm chữ sau vào đầu class.
DataEnteredDelegate

Cứ kệ lỗi đỏ đó. Tiếp theo, copy hàm sau vào trên ngoặc đóng cuối cùng
func setback(info: String){
      la.text = info
  }
Hàm này sẽ lấy giá trị chuỗi chuyển về từ class second và set nó ra Label la vốn đang có chữ ”Đây là chữ ví dụ”
Thêm dòng sau vào trong lệnh override func prepareForSegue
messageController.delegate = self

Sang class second, copy đoạn sau xuống ngay dưới lệnh import
protocol DataEnteredDelegate: class {
    func setback(info: String)
}
Thêm dòng sau vào sau ngay dưới dòng bắt đầu class
weak var delegate: DataEnteredDelegate? = nil

Sửa hàm func nut2 thành.
let nam = nhap.text
        if(nam == ""||nam == " "){
            toast("Bạn chưa nhập năm sinh")
        }
        else{
            self.delegate?.setback(nam!)
            self.dismissViewControllerAnimated(true, completion: nil)
            }
Trong hàm này, ta lấy giá trị của textField, nếu nó rỗng, yêu cầu người dùng nhập lại, nếu có dữ liệu rồi ta pass nó trở về màn hình trước thông qua hàm setback đã khai báo trong class ViewController. Để làm việc này ta cần có protocol đã khai báo ngay trên đầu chương trình.

Chạy thử, màn hình bật sang, ta nhập vào số nào đó.

Ấn nút Quit để thấy dòng chữ đã được chuyển về và set ra Label trên cùng.

Vậy ta đã chuyền đi, chuyển về dữ liệu từ ViewController sang class second.

Có thể chuyển bất cứ dữ liệu dạng nào, như mảng, chuỗi, số đều được.

No comments:

Post a Comment