c3dpZnQgaW1wb3J0IFVJS2l0IGNsYXNzIFRvRG9WaWV3Q29udHJvbGxlcjogVUlWaWV3Q29udHJvbGxlciwgVUlUYWJsZVZpZXdEZWxlZ2F0ZSwgVUlUYWJsZVZpZXdEYXRhU291cmNlIHsgdmFyIHRvRG9MaXN0ID0gW0J1eSBtaWxrLCBDYWxsIGZyaWVuZF0gbGV0IHRhYmxlVmlldyA9IFVJVGFibGVWaWV3KCkgb3ZlcnJpZGUgZnVuYyB2aWV3RGlkTG9hZCgpIHsgc3VwZXIudmlld0RpZExvYWQoKSBzZXR1cFRhYmxlVmlldygpIHNldHVwQWRkQnV0dG9uKCkgdGl0bGUgPSBUby1EbyBMaXN0IH0gZnVuYyBzZXR1cFRhYmxlVmlldygpIHsgdGFibGVWaWV3LmZyYW1lID0gdmlldy5ib3VuZHMgdGFibGVWaWV3LmRlbGVnYXRlID0gc2VsZiB0YWJsZVZpZXcuZGF0YVNvdXJjZSA9IHNlbGYgdGFibGVWaWV3LnJlZ2lzdGVyKFVJVGFibGVWaWV3Q2VsbC5zZWxmLCBmb3JDZWxsUmV1c2VJZGVudGlmaWVyOiBjZWxsKSB2aWV3LmFkZFN1YnZpZXcodGFibGVWaWV3KSB9IGZ1bmMgc2V0dXBBZGRCdXR0b24oKSB7IGxldCBhZGRCdXR0b24gPSBVSUJhckJ1dHRvbkl0ZW0oYmFyQnV0dG9uU3lzdGVtSXRlbTogLmFkZCwgdGFyZ2V0OiBzZWxmLCBhY3Rpb246ICNzZWxlY3RvcihhZGRUYXNrKSkgbmF2aWdhdGlvbkl0ZW0ucmlnaHRCYXJCdXR0b25JdGVtID0gYWRkQnV0dG9uIH0gQG9iamMgZnVuYyBhZGRUYXNrKCkgeyBsZXQgYWxlcnQgPSBVSUFsZXJ0Q29udHJvbGxlcih0aXRsZTogTmV3IFRhc2ssIG1lc3NhZ2U6IEVudGVyIHRhc2sgbmFtZSwgcHJlZmVycmVkU3R5bGU6IC5hbGVydCkgYWxlcnQuYWRkVGV4dEZpZWxkIHsgdGV4dEZpZWxkIGluIHRleHRGaWVsZC5wbGFjZWhvbGRlciA9IFRhc2sgfSBsZXQgYWRkQWN0aW9uID0gVUlBbGVydEFjdGlvbih0aXRsZTogQWRkLCBzdHlsZTogLmRlZmF1bHQpIHsgXyBpbiBpZiBsZXQgdGFzayA9IGFsZXJ0LnRleHRGaWVsZHM/LmZpcnN0Py50ZXh0LCAhdGFzay5pc0VtcHR5IHsgc2VsZi50b0RvTGlzdC5hcHBlbmQodGFzaykgc2VsZi50YWJsZVZpZXcucmVsb2FkRGF0YSgpIH0gfSBhbGVydC5hZGRBY3Rpb24oYWRkQWN0aW9uKSBhbGVydC5hZGRBY3Rpb24oVUlBbGVydEFjdGlvbih0aXRsZTogQ2FuY2VsLCBzdHlsZTogLmNhbmNlbCkpIHByZXNlbnQoYWxlcnQsIGFuaW1hdGVkOiB0cnVlKSB9IGZ1bmMgdGFibGVWaWV3KF8gdGFibGVWaWV3OiBVSVRhYmxlVmlldywgbnVtYmVyT2ZSb3dzSW5TZWN0aW9uIHNlY3Rpb246IEludCkgLSZndDsgSW50IHsgcmV0dXJuIHRvRG9MaXN0LmNvdW50IH0gZnVuYyB0YWJsZVZpZXcoXyB0YWJsZVZpZXc6IFVJVGFibGVWaWV3LCBjZWxsRm9yUm93QXQgaW5kZXhQYXRoOiBJbmRleFBhdGgpIC0mZ3Q7IFVJVGFibGVWaWV3Q2VsbCB7IGxldCBjZWxsID0gdGFibGVWaWV3LmRlcXVldWVSZXVzYWJsZUNlbGwod2l0aElkZW50aWZpZXI6IGNlbGwsIGZvcjogaW5kZXhQYXRoKSBjZWxsLnRleHRMYWJlbD8udGV4dCA9IHRvRG9MaXN0W2luZGV4UGF0aC5yb3ddIHJldHVybiBjZWxsIH0g
swift import UIKit class ToDoViewController: UIViewController, UITableViewDelegate, UITableViewDataSource { var toDoList = [Buy milk, Call friend] let tableView = UITableView() override func viewDidLoad() { super.viewDidLoad() setupTableView() setupAddButton() title = To-Do List } func setupTableView() { tableView.frame = view.bounds tableView.delegate = self tableView.dataSource = self tableView.register(UITableViewCell.self, forCellReuseIdentifier: cell) view.addSubview(tableView) } func setupAddButton() { let addButton = UIBarButtonItem(barButtonSystemItem: .add, target: self, action: #selector(addTask)) navigationItem.rightBarButtonItem = addButton } @objc func addTask() { let alert = UIAlertController(title: New Task, message: Enter task name, preferredStyle: .alert) alert.addTextField { textField in textField.placeholder = Task } let addAction = UIAlertAction(title: Add, style: .default) { _ in if let task = alert.textFields?.first?.text, !task.isEmpty { self.toDoList.append(task) self.tableView.reloadData() } } alert.addAction(addAction) alert.addAction(UIAlertAction(title: Cancel, style: .cancel)) present(alert, animated: true) } func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return toDoList.count } func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { let cell = tableView.dequeueReusableCell(withIdentifier: cell, for: indexPath) cell.textLabel?.text = toDoList[indexPath.row] return cell }