コンテンツにスキップ

スプリットビュー(iPad)

概要

スプリットビューは、一つの画面にお知らせ一覧画面とお知らせ詳細画面を並べるものです。

SDK では、UISplitViewController を継承したビューコントローラ PopinfoPadViewController を提供しており、iPad 時に活用できます。

画面イメージは以下のとおりです。

  • 横画面表示時
    左側にお知らせ一覧画面、右側にお知らせ詳細画面が配置されます。左側のお知らせ一覧画面の行をタップすると、連動して右側のお知らせ詳細画面の表示内容が変わります。
    横画面表示時
  • 縦画面表示時
    お知らせ詳細画面が画面領域全体に表示されます。
    ナビゲーションバーの「お知らせ一覧」ボタンをタップすると、お知らせ詳細画面の上に重なる形でお知らせ一覧画面が表示されます。
    縦画面表示時1 縦画面表示時2

PopinfoPadViewController を使い、iPad に対応する

PopinfoPadViewController クラスの初期化には initWithNibName を用い、nib ファイルには nil を指定してください。

また、PopinfoViewConfiguration.m 内の「kIpadSplitViewUse」値を YES に変更していただく必要があります。

以下、実装例です。(PopinfoPadViewController に直接関連する部分のみ記述します。)

  1. PopinfoPadViewController を生成します。ここでは、アプリ起動時に生成し、タブの3番目に配置する例です。

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
        // PopinfoPadViewController を生成し、tabBarController の3番目のアイテムに配置する
        let padVC = PopinfoPadViewController(nibName: nil, bundle:nil)
        padVC.tabBarItem = UITabBarItem(tabBarSystemItem: .favorites, tag: 2)
        self.tabBarController.viewControllers = [viewController1, viewController2, padVC]
    }
    
  2. プッシュ通知受信時における PopinfoPadViewController の動作を実装します。 PopinfoPadViewController が配置されているタブを選択し、表示を更新します。

    func popinfoReceiver(_ popinfoReceiver: PopinfoReceiver, didReceivePopinfoMessage messageId: Int, popup: String, payload: [AnyHashable : Any]) {
        if UIDevice.current.userInterfaceIdiom == .pad {
            // iPad時の処理
            // PopinfoPadViewController のタブを選択する
            let padVC = self.tabBarController.viewControllers[2]
            self.tabBarController.selectedViewController = padVC
    
            // メッセージIDを設定し、表示を更新する
            padVC.messageId = messageId
            padVC.detailVC.reloadMyViews()
        } else {
            // iPhone時の処理
        }
    }