Tuesday, September 12, 2017

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

Truyền dữ liệu giữa các class là việc quan trọng, thường xuyên phải làm khi lập trình.
Ta sẽ làm truyền đi trước.
Trong baidau, để ví dụ ta sẽ chuyển chữ sang class second.
Nháy vào Main.storyboard, bây giờ ta sẽ nối ViewController của màn hình đầu với viewController Second.
Hãy nháy vào cái tam giác nhỏ bên trái của view Controller Scene và Second Scene để chúng sổ ra trông như sau.

Bây giờ nháy chuột phải vào dòng View Controller màu xanh, giữ, kéo cái gạch xanh đến dòng Second cũng có điểm vàng ở ngoài cùng.

Rồi thả tay, một của sổ bật ra, chọn show.


Tiếp, nháy chuột vào dòng Show segue to... vừa được tạo ra bên dưới View Controller.
Phía trên bên phải, dưới biểu tượng như con quay, chỗ Identifier ghi chữ ad vào, xong nháy ra ngoài để thấy bây giờ có chữ Show segue “ad” to “Second” ở bên trái. Và có đường nối giữa View Controller đầu và second.



Quay lại ViewController.swift, copy đoạn sau lên trên ngoặc đóng dưới cùng.
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
        if segue.identifier == "ad"{
            let messageController = segue.destinationViewController assecond
            let t = "Đây là chữ chuyn sang"
              messageController.sang = t
              }
    }
Sửa lệnh trong func nutnext thành.
self.performSegueWithIdentifier("ad", sender: self)
Lệnh mở ra class mới bây giờ phải có tên Segue ta đã đặt để nối giữa hai màn hình trong Main.storyboard. Tạm thời kệ dấu đỏ chỗ chữ sang.


Chữ “ad” ở đây chính là tên segue ta đã đặt khi nối hai View Controller trong storyboard.
Sang class second.swift, copy vào trên dòng override
var sang = " "
Thêm vào trong viewDidLoad.
la.text = sang

Giải thích.
Nếu ta không kéo để tạo segue, dữ liệu sẽ không chuyển qua được. Đây là bước kéo thả bắt buộc ta phải dùng. Và ta cũng chỉ vào storyboard để kéo như thế nếu cần chuyển dữ liệu sang thôi. Nếu không cần, bạn có thể bật ra màn hình mới như cách ở bài trước.
Ta chuyển qua dòng chữ vào một biến có tên sang thì ở bên class second ta cũng nhận lại nó với tên sang và set chữ đó vào Label la vốn đang có chữ “Nhập năm dương lịch”
Còn một cách làm khác không dùng segue nhưng thêm vài dòng, bạn thay các lệnh trong func nutnext
Thành let vc = second()
vc.sang="Đây là chữ chuyn sang"

self.presentViewController(vc, animated: true, completion: nil)

Đồng thời rào toàn bộ lệnh override trước đó thành  comment

cách này ta thậm chí không cần phải vào storyboard để kéo ra view Controller mới, không cần kéo để tạo segue.


Chạy thử để thấy chữ đã chuyển sang.

No comments:

Post a Comment