SwiftチュートリアルNo.5 Beginning iOS13&Swift App Development

 今回は、Chapter4  ToDoList using CoreDataです。
この画面は、入力画面で優先順位をつけられます。
入力後は、TableViewにリスト表示され、リストを指定してクリックすると詳細画面に遷移します。
次回は、ToDoListに写真を追加することに挑戦します。

//  ToDoTableViewController.swift
//  ToDoList2
import UIKit
class ToDoTableViewController: UITableViewController {
    
    var toDoCDs:[ToDoCD] = []
    override func viewDidLoad() {
        super.viewDidLoad()
    }
    override func viewWillAppear(_ animated: Bool) {
               getToDos()
       
}
 func getToDos(){
        if let context = (UIApplication.shared.delegate as? AppDelegate)?.persistentContainer.viewContext {
            if let toDosFromCoreData = try? context.fetch(ToDoCD.fetchRequest()){
                if let toDos = toDosFromCoreData as? [ToDoCD]{
                    toDoCDs = toDos
                    tableView.reloadData()
                }
            }
        }
    }
    
   
    
    override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath){
    let selectedToDo = toDoCDs[indexPath.row]
        
        performSegue(withIdentifier: “moveToDetails”, sender: selectedToDo)
    }
    override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return toDoCDs.count
    }
   
    override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = UITableViewCell()
        let selectedToDo = toDoCDs[indexPath.row]
        
        if selectedToDo.priority == 1    {
            if let name = selectedToDo.name{
            cell.textLabel?.text = “❗️” + name
            }
        }
        else if selectedToDo.priority == 2{
            if let name = selectedToDo.name{
            cell.textLabel?.text = “‼️” + name
            }
        }
        else {
            if let name = selectedToDo.name{
            cell.textLabel?.text = name
        }
        }
        return cell
    }
        
       override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        
        if let addToDoViewController = segue.destination as?
            AddToDoViewController{
            addToDoViewController.toDoTableViewController = self
        }
    
                
        if let detailsToDoViewController = segue.destination as?
            ToDoDetailsViewController{
            if let selectedToDo = sender as? ToDoCD{
                detailsToDoViewController.toDoCD = selectedToDo
            }
        }
}
        
}

//  ToDoDetailsViewController.swift
//  ToDoList2
import UIKit
class ToDoDetailsViewController: UIViewController {
    var toDoCD:ToDoCD? = nil
    
    @IBOutlet weak var toDoLabel: UILabel!
    
    override func viewDidLoad() {
        super.viewDidLoad()
       
        if let toDo = toDoCD{
        if toDo.priority == 1{
            if let name = toDo.name{
            toDoLabel.text = “❗️” + name
        }
    }
        else if toDo.priority == 2{
    if let name = toDo.name{
            toDoLabel.text = “‼️” + name
            }
        }else{
        if toDo.name != nil{
            toDoLabel.text = toDo.name
        }
        // Do any additional setup after loading the view.
    }
        }
    }
    
    @IBAction func doneTapped(_ sender: Any) {
        if let context = (UIApplication.shared.delegate as? AppDelegate)?.persistentContainer.viewContext{
            if let toDo = toDoCD{
                context.delete(toDo)
            }
            (UIApplication.shared.delegate as? AppDelegate)?.saveContext()
        }
        navigationController?.popViewController(animated: true)
    }
}
//  AddToDoViewController.swift
//  ToDoList2
import UIKit
class AddToDoViewController: UIViewController {
    
    var toDoTableViewController:ToDoTableViewController? = nil
    
    @IBOutlet weak var nameTextField: UITextField!
    @IBOutlet weak var prioritySegment: UISegmentedControl!
    
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
    }
    
    @IBAction func addTapped(_ sender: Any) {
        
        if let context = (UIApplication.shared.delegate as? AppDelegate)?.persistentContainer.viewContext
        {
        let newToDo = ToDoCD(context: context)
        newToDo.priority = Int32(prioritySegment.selectedSegmentIndex)
        
            if let name = nameTextField.text{
            newToDo.name = name
        }
        (UIApplication.shared.delegate as? AppDelegate)?.saveContext()
        }
        navigationController?.popViewController(animated: true)
    }
}
   

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA