#author("2016-11-29T14:24:15+09:00","default:wikiwriter","wikiwriter")
[[UIKit/テーブル]]

&tag(UIKit/テーブル/Tips);
*目次 [#g2739ad7]
#contents
*関連ページ [#q131401b]
*参考情報 [#g5188ae1]

*ヘッダービュー、フッタービューの利用 [#la408ad2]
-プロトタイプセルを追加しておき、その上下にViewを追加すればよい。プロトタイプセルが存在しないとうまくいかない。
-参考: [[How to size a table header view using Auto Layout in Interface Builder | Roadfire Software:http://roadfiresoftware.com/2015/05/how-to-size-a-table-header-view-using-auto-layout-in-interface-builder/]]…高さをフィットさせる方法。

*ステータスバー対応 [#m4a2d75b]
-何も考えずUITableViewControllerを実装するとステータスバーの下にセルが潜り込んでしまう。
-[[やはりお前らのiOS7対応は間違っている(解説編) - Qiita:http://qiita.com/yimajo/items/254c7cebab7864678246]]のはなしは関係なさそう。
-以下のようにcontentInsetを設定するしかないかも?ストーリーボードから設定する方法は不明。
#pre{{
    override func viewDidLoad() {
        super.viewDidLoad()
        self.tableView.contentInset = UIEdgeInsets(top: 20, left: 0, bottom: 0, right: 0)
        self.tableView.backgroundColor = UIColor.grayColor()
    }
}}
-ナビゲーションコントローラーを併用するとよろしくやってくれるので普通はそっちを使えばいいのかもしれない。

*一覧・編集画面 [#o48dd029]

**編集画面の変更内容を一覧画面に反映する [#j0cad1f2]
***方法1: viewWillAppearで表示更新 [#b0aa03a8]
-「iOS開発におけるパターンによるオートマティズム」で紹介されていた方法(p136)。viewWillAppearでVisibleCellsを更新する方法。
#pre{{
    override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)
        if let indexPath = tableView.indexPathForSelectedRow {
            tableView.deselectRow(at: indexPath, animated: animated)
        }
        for cell in tableView.visibleCells {

        }
    }
}}

**方法2: 通知を利用する [#q367c080]
-CoreDataを使用している場合、通知を利用することができる。Swift+CoreDataによるiOSプログラミングで解説されていた方法(p213)。
-viewDidLoadで通知を登録し、deinitで解除。通知をうけとったタイミングでreloadRowsAtIndexPathsを呼び出す。

**方法3 NSFetchedResultsControllerの通知を利用する。 [#x1bfe8b8]
-NSFetchedResultsControllerを使用している場合、自動でdelegateメソッドが呼ばれるのでそrを利用する。

トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS