#author("2016-11-29T21:46:46+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を利用する。 *その他 [#g207e703] **UITableView+UIViewControllerとUITableViewControllerの違い [#m2c057b6] -UITableViewControllerではviewWillAppearで自動的にreloadDataが呼び出されることのほか、UITextFieldを含むセルを編集した際そのセルまで自動的にスクロールする処理が存在するなど、かなりな親切設計となっている。 --[[UITableViewController のreloadDataをコールするタイミング - Over&Out その後:http://d.hatena.ne.jp/shu223/20110403/1304235112]] --[[UITableViewControllerのviewWillAppear:メソッドで気をつけること - More the iPhone Development Playground:http://kimada.hatenablog.com/entry/20090917/1253187128]] --[[UITableViewControllerを使わないでテーブルビューを使うとき実装すべきメソッド - 24/7 twenty-four seven:http://blog.kishikawakatsumi.com/entry/20090121/1232548786]] --[[ios - Disabling automatic scrolling of UITableView when editing UITextField inside UITableViewCell - Stack Overflow:http://stackoverflow.com/questions/9637089/disabling-automatic-scrolling-of-uitableview-when-editing-uitextfield-inside-uit]] --[[xcode - Get UITableView to scroll to the selected UITextField and Avoid Being Hidden by Keyboard - Stack Overflow:http://stackoverflow.com/questions/5265559/get-uitableview-to-scroll-to-the-selected-uitextfield-and-avoid-being-hidden-by]] --[[【Swift】UITableViewControllerとUITableViewの違い。 | はじはじアプリ体験記:http://hajihaji-lemon.com/smartphone/swift/uitableviewcontroller-difference/]] -テーブルを全面に表示する画面の場合、UITableViewControllerを素直に使った方が良いかもしれない。