SwiftでStoryBoardとJASidePanelsとCoreDataを使う(メモ)


SwiftでStoryBoardを使って、JASidePanels(Objective-C)とCoreDataを使うメモ。
JASidePanelsはcocoapods経由で組み込んだ。cocoapodsの説明は割愛。
JASidePanelsのcenterPanelはUINavigationContorollerにして、そこでCoreDataを使うようにコーディングする。

StoryBoardでSceneを作成

以下のようにした。
1.JASidePanelsの土台になるUIViewControllerをSBに追加 → ラベル: MainPanel
2.leftPanelになるUITableViewContorollerをSBに追加 → ラベル: SidePanelLeft
3.rightPanelになるUITableViewContorollerをSBに追加 → ラベル: SidePanelRight
4.centerPanelになるUINavigationContorollerをSBに追加 → ラベル: Master
5.そのNavigationContorollerのtopViewControllerになるUITableViewControllerをSBに追加
6.個々のデータの編集用にUIViewContorollerをSBに追加
fig01

 

各Sceneに「Class」と「Storyboard ID」を設定

fig021.MainPanel Scene
  Class: MainPanelViewController
2.SidePanelLeft Scene
  Class: (UITableViewContoroller)
  Storyboard ID: leftPanel
3.SidePanelRight Scene
  Class: (UITableViewContoroller)
  Storyboard ID: rightPanel
4.Master Scene
  Class: (UINavicationController)
  Storyboard ID: centerPanel
5.Master Scene – topViewController
  Class: DataListViewController
  ※topViewController設定→SB上でcontrolキーを押しながらMaster SceneからこのSceneへドラッグ

Is Initial View Controller設定
MainPanel SceneはInitial View Controllerとなるので、Attribute Inspectorパネルの「Is Initial View Controller 」にチェックを入れる。

Bridging-Header.h

Objective-C で書かれた JASidePanels を使うには xxxxx-Bridging-Header.h が必要
ここでは MyApplicaton-Bridging-Header.h に下記コードを追加

#import <JASidePanels/JASidePanelController.h>
#import <JASidePanels/UIViewController+JASidePanel.h>

AppDelegateの記述

AppDelegateのdidFinishLaunchingWithOptions、本来は何も書かなくてもJASidePanelsは表示されるが、今回はCoreDataを使うので、centerPanelであるUINavigationControllerのtopViewControllerにself.managedObjectContext を渡すための処理を書く。

    func application(application: UIApplication!, didFinishLaunchingWithOptions launchOptions: NSDictionary!) -> Bool {
        let mainPanel = self.window!.rootViewController as MainPanelViewController
        let navigationController = mainPanel.centerPanel as UINavigationController
        let controller = navigationController.topViewController as DataListViewController
        controller.managedObjectContext = self.managedObjectContext
        return true
    }

MainPanelViewController.swift

1.MainPanelViewControllerはJASidePanelControllerのサブクラス。
2.awakeFromNibの中身は swift風には下記でよいようだ。

class MainPanelViewController: JASidePanelController {
    override func awakeFromNib() {
        self.leftPanel = self.storyboard?.instantiateViewControllerWithIdentifier("leftPanel") as UIViewController
        self.rightPanel = self.storyboard?.instantiateViewControllerWithIdentifier("rightPanel") as UIViewController
        self.centerPanel = self.storyboard?.instantiateViewControllerWithIdentifier("centerPanel") as UIViewController
    }

SwiftでもStoryBoard経由でObjective-c版のJASidePanelsをCoreDataとともに使えることが分かった。メモはここまで。

広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中