MyToDo


Cellへの理解を深めるために作成。

<img width="200" alt="ezgif.com-video-to-gif" src="https://qiita-image-store.s3.amazonaws.com/0/302540/6343b6e7-2ba5-a543-7b8a-d9f7b4282b15.gif">

#ソースコード
追加画面にて文字を入力し「追加する」を押すと
メイン画面に追加される

```swift:ViewController.swift

import UIKit

//UITableViewDelegateはテーブルのデータが選択または編集がされたときに呼び出されるメソッドが定義されたプロトコル
//UITableViewDataSourceはテーブルビューを構築および変更するのに必要なテーブルビューオブジェクトの情報を提供
//TableViewを使用する場合、上記の二つのメソッドが必須
class ViewController: UIViewController,UITableViewDelegate,UITableViewDataSource {
    // セルの行数の式。 return 変数.countにより入力された表示するセル数をカウントしている
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return TodoKobetsunonakami.count
    }
    
    //セルのテキストを追加する式
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        
        //storyboardで指定したtodoCell識別子を利用して再利用可能なセルを取得する
        let TodoCell: UITableViewCell = tableView.dequeueReusableCell(withIdentifier: "TodoCell", for: indexPath)
        //indexPath.rowはセルの番号。Todokobetsunonakamiのセル番号を取得してTodocellに代入し表示ささせる
        TodoCell.textLabel!.text = TodoKobetsunonakami[indexPath.row]
        return TodoCell
    }
    

    override func viewDidLoad() {
        super.viewDidLoad()
        //存在確認。画面を起動した時に、TodoList（入力したTODOのテキストが入っている場所）に何かしらのデータがあるかどうか確認する命令
        //式if UserDefaults.standard.object(forKey: "key名") != nil {
        if UserDefaults.standard.object(forKey: "TodoList") != nil {
            //TodoListにデータがあった場合、TodoKobetsunonakami変数にデータを渡す命令
            TodoKobetsunonakami = UserDefaults.standard.object(forKey: "TodoList") as! [String]
        }
    }
    
    //セルを左にスワイプした時にデリートボタンが出る機能。
    //func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCell.EditingStyle, forRowAt indexPath: IndexPath){}
    func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCell.EditingStyle, forRowAt indexPath: IndexPath) {
        //アイテム削除の処理
        TodoKobetsunonakami.remove(at: indexPath.row)
        let indexPaths = [indexPath]
        tableView.deleteRows(at: indexPaths, with: .automatic)
        }
    
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }

}
```
#ソースコード

```swift:addController.swift

import UIKit

// Todoの中身を保存する変数を作成。複数の値を使うので配列型を採用
var TodoKobetsunonakami = [String]()

class AddController: UIViewController {
    
    //Todoの内容を入力するためのTodoTextField
    @IBOutlet weak var TodoTextField: UITextField!
    //Todoを追加するためのTodoAddButton
    @IBAction func TodoAddButton(_ sender: Any) {
        //変数Todokobetsunonakamiにappend（追加）する（TodoTextField.textに入力された文字）
        TodoKobetsunonakami.append(TodoTextField.text!)
        //追加されたらTodoTextFieldの中身を空にします。
        TodoTextField.text = ""
        //変数（Todokobetsunonakami）の中身をUserDefaults(データを保存しておける箱）に保存する処理。
        //TodoListはデータを保存しておく箱名。
        //式　UserDefaults.standard.set（変数, forkey: "データを保存しておく箱名"
        UserDefaults.standard.set( TodoKobetsunonakami, forKey: "TodoList")
    }
    override func viewDidLoad() {
        super.viewDidLoad()
    }

}
```
#スワイプ時のデリートボタン
`func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCell.EditingStyle, forRowAt indexPath: IndexPath)`