Swiftで遊ぼう! - 468 - Navigation Controllers and Table Views 8
pSwiftで遊ぼう!の古い記事-> Life-LOG OtherSide
Beginning iPhone Development with Swift: Exploring the iOS SDK
- 作者: David Mark,Jack Nutting,Kim Topley,Fredrik Olsson,Jeff LaMarche
- 出版社/メーカー: Apress
- 発売日: 2014/11/19
- メディア: Kindle版
- この商品を含むブログを見る
RootViewConrollerで扱うプロパティの実体化をviewDidLoad()メソッドを使って実行しました。
このテーブルビューコントローラーで2つのセクション(Sections)を持つテーブルビューをコントロールします。
最初のセクションでiOSシステムが持っている全てのフォントファミリー情報(Font Families)を表示して、それぞれのフォントファミリーは、ファミリーに属するフォントのリストを表示させていきます。
もう1すのセクションで、単一のお気に入りフォントファミリー(FavoriteList)とそれに属するフォントのリストを表示させます。しかし、お気に入りの登録が無ければ(特にアプリを最初に立ち上げた時)、全く表示されないようにします。
テーブルの状況が変化する場合、テーブルビューをリロードさせる「tableView.reloadData()」メソッドを使うのが常套手段です。これを画面が描画する時に呼ぶといいようです。
override func viewWillAppear(animated: Bool) { super.viewWillAppear(animated) tableView.reloadData() }
TableViewControllerにはデフォルトでシングルのTable Viewとcellのプロトタイプが埋め込まれています。ややこしいデリゲーションの繋がりが既にできているんです(しっかり理解していますか?)。後やるべきことは、デリゲートの実装です。
テーブルビューを表示させるのに実装しなければならないメソッドはUITableViewDataSourceで用意されている2つのメソッドが必須メソッドですが、今回は2つのセクションを使うので少し増えます。
まずこのデリゲーションメソッドを実装する前に、このメソッドの中で使用するヘルパーメソッドを用意します。テーブルの中のどのcellにどのフォントを表示するのか決定するメソッドを用意します。
func fontForDisplay(atIndePath indexPath: NSIndexPath) -> UIFont? { if indexPath.section == 0 { let familyName = familyNames[indexPath.row] guard let fontName = UIFont.fontNamesForFamilyName(familyName).first else { return nil } return UIFont(name: fontName, size: cellPointSize) } else { return nil } }
sectionが「0」の場合、全てのフォントファミリーを表示するのですが、フォントファミリーの一番最初の項目だけ表示するメソッドです。インデックスパスのrow番号に一致するフォントファミリーをfamilyNameとして抽出して、その最初の項目をfontNameとして抽出します。そして、デフォルトサイズと含めてオプショナルなUIFontクラスを返すメソッドです。
今日はここまでです。