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 as! second
let t = "Đây là chữ chuyển 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ữ chuyển 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