swift3でToDoリストアプリを作ってみた

SQL基礎に受かり気持ち的に余裕ができたのでようやくswiftの勉強を再開しました。(まだDBAがありますが、、、)

今回参考にしたサイトはこちらです↓
http://mosho-developer.blogspot.jp/2015/11/xcode-swifttodo.html
ストーリーボードの実装に関してはこのサイトの通りに進めていきました。
しかし今回はswift3を使用したため変更点などもあり、つまずいた点もいくつかありました。 今回はその辺をまとめていこうと思います。


完成形は今のところこんな感じです。ちょっとずれてますが、、
❶+を押下するとテキストフィールドが現れて、テキストフィールドをクリックするとキーボードが出てきます。
❷キーボード以外のところやreturnを押下するとキーボードが閉じられるようになっています。
❸ADDボタンを押下すると、テーブルリストにテキストが追加されています。


🌟NSUserDefaultsが変更されていた

変更前

NSUserDefaults.standardUserDefaults().setObject(todoItem, forKey: "todoList")

変更後

UserDefaults.standard.set(todoItem, forKey: "todoList")

🌟シュミレーターでキーボードが出ない

Hardware -> Keyboard オプションの Connect Hardware Keyboard を非選択にすることで解決!

🌟改行(return)でキーボードが閉じない!!

resignFirstResponderメソッドを定義しているのにreturnでキーボードが閉じないのは、delegateを指定していないからでした。

❶classにUITextFieldDelegateを追加

class AddToDo: UIViewController,UITextFieldDelegate{

❷viewDidLoadにテキストフィールドのdelegateを自分自身に設定

//viewDidLoadはインスタンス化された直後に一度だけ呼ばれる
    override func viewDidLoad() {
        super.viewDidLoad()
        itemText.delegate = self
    }

🌟todoItem配列が保持している文字列をテーブルに表示させる

以下のソースコードで正常に動きました
色々と変更点があったようですが詳しくは調べていません😢

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cellValue = UITableViewCell(style:  UITableViewCellStyle.default, reuseIdentifier: "cell")
        cellValue.textLabel?.text = todoItem[indexPath.row]
        return cellValue
    }

🌟リストをスライドして削除機能をする

こちらの記事を参考にしました↓
【Swift3】UITableViewのセルをスワイプで削除する - Qiita

🌟こんにちは、エラー

f:id:mmmnn1257:20170806233157p:plain

このエラーで、シュミレーターに何も表示されなくなりました。
問題はストーリーボードとの接続にあったようです。
ストーリーボードのview controllerを右クリックすると以下のような画面が出てきます。
f:id:mmmnn1257:20170806233514p:plain
黄色いさんかく⚠️印が出てきたらその部分に問題があります!
削除してあげましょう。

こちらの記事を参考にしました↓
【iOS初心者】Xcode8 Swift3 エラー「terminating with uncaught exception of type NSException」「Thread 1: signal SIGABRT」が出たらチェックする2つこと | programming.info


以上が私がつまずいた点です。
delegateなど、まだまだ詳しく調べきれていない箇所が多いので、これからの課題にしていこうと思います。