Swiftで遊ぼう! on Hatena

あしたさぬきblogでやってた初心者オヤジのiOSプログラミング奮闘記がHatenaに来ました

Swiftで遊ぼう! - 468 - Navigation Controllers and Table Views 8

pSwiftで遊ぼう!の古い記事-> Life-LOG OtherSide

Beginning iPhone Development with Swift: Exploring the iOS SDK

Beginning iPhone Development with Swift: Exploring the iOS SDK

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クラスを返すメソッドです。

今日はここまでです。