Computer >> Máy Tính >  >> Lập trình >> IOS

Làm thế nào để lặp lại một nhiệm vụ liên tục sau một khoảng thời gian đều đặn trong Swift (iOS)?

Trong bài đăng này, chúng ta sẽ học cách lặp lại một công việc sau một khoảng thời gian đều đặn.

Trong ví dụ này, chúng tôi sẽ cập nhật liên tục một nhãn sau một khoảng thời gian cụ thể.

Trong iOS, chúng tôi sử dụng Timer để đạt được nhiệm vụ này. Hãy bắt đầu

Bước 1 - Mở Xcode → Dự án mới → Ứng dụng một lần xem → Đặt tên cho nó là “Bộ hẹn giờ”

Bước 2 - Mở Main.storyboard và thêm nhãn như hình dưới đây.

Làm thế nào để lặp lại một nhiệm vụ liên tục sau một khoảng thời gian đều đặn trong Swift (iOS)?

Bước 3 - Đính kèm một @IBOutlet cho nhãn dưới cùng. Đặt tên nó là timerLabel

Bước 4 - Chúng tôi sẽ hiển thị số giây kể từ khi ứng dụng được khởi chạy trên nhãn. Vì vậy, khai báo hai biến trong bộ điều khiển chế độ xem như sau.

var timeLaunched: Int = 0
var timer: Timer?

Bước 5 - Thêm chức năng cập nhật nhãn. Chúng tôi sẽ gọi hàm này lặp đi lặp lại trong khoảng thời gian đều đặn sau đó.

@objc func updateLabel() {
   timerLabel.text = " Time Launched = \(timeLaunched) Seconds "
   timeLaunched += 1
}

Như bạn có thể thấy, chức năng này tăng thời gian khởi chạy và hiển thị trên nhãn.

Bước 6 - Khởi tạo và kích hoạt bộ đếm thời gian. Trong viewDidLoad của ViewController, hãy khởi tạo bộ đếm thời gian và gọi hàm updateLabel theo các khoảng thời gian đều đặn. Ở đây chúng tôi đang kích hoạt chức năng cứ sau 1 giây. Bạn có thể kích hoạt chức năng dựa trên yêu cầu của mình.

override func viewDidLoad() {
   super.viewDidLoad()
   // Do any additional setup after loading the view, typically from a nib.
   updateLabel()
   timer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: (#selector(ViewController.updateLabel)), userInfo: nil, repeats: true)
}

Như bạn có thể thấy, chúng tôi đã khởi tạo bộ đếm thời gian và đặt "số lần lặp lại" thành true. Thao tác này sẽ gọi hàm updateLabel mỗi giây.

Khởi chạy ứng dụng, bạn có thể thấy nhãn cập nhật mỗi giây.

Làm thế nào để lặp lại một nhiệm vụ liên tục sau một khoảng thời gian đều đặn trong Swift (iOS)?