大阪市中央区 システムソフトウェア開発会社

営業時間:平日09:15〜18:15
MENU

(17)Unity3DとSwiftでiOSプログラミング~ NotificationCenter:01~Menuを作ろう【実装編6】

株式会社クローバーフィールドの経営理念
著者:川上洋
公開日:2018/01/30
最終更新日:2018/06/21
カテゴリー:技術情報

こんにちは。川上です。

=・=・=
今までで、縦型(Portrait)でTableViewを表示できました。
TableView内のCellの表示設定には、また、追い追いにしましょう。

まずは、TableViewの表示を横型(Landscape)にも対応しましょう。

既存の記事で、Uniyで検出した回転イベントを通信して受信していた関数に、
回転通知を各Controllerに同報周知(NotificationCenter)して、
受信したController内で表示を更新しましょう。

色々なClassのextensionをまとめて置くところように新規でFileで準備しました。

 

 
以下、NotificationCenterも設定順序です。

1.NotificationCenterのextension設定

//  CF_Lib.swift
import Foundation
import UIKit
import SystemConfiguration

// MARK: - Notification のextension
extension Notification.Name {
    static let myOrientationName = Notification.Name("myOrientationName")
}

2.回転イベントを受信した関数の設定

//GateInUnity.swift
import UIKit
import Firebase

class GateInUnity: NSObject {
 ・・・
 // MARK: -⚡️-----NotificationCenterを使ってViewController間でイベント通知を送る
    static let notificationCenter = NotificationCenter.default
    // MARK: -⚡️-----  updateDeciveOrientationハンドラー
    //MARK: --プラグイン経由 画面の回転を検出
    static func updateDeciveOrientation(){
        print("**** プラグイン経由 -- 画面の回転を検出 ****")
        // MARK:+++ AdMob再表示
        GateInUnity.SettingAdMobView()//initAdMobToUnity()
        
        //通知を送りたい側のVCに通知をPostする処理
        // MARK:+++  Notification通知を送る(通知を送りたい箇所に書く)
        GateInUnity.notificationCenter.post(name: .myOrientationName, object: nil)

    }

 ・・・
} 

3.NaniMenuViewControllerの設定

//NaniMenuViewController.swift
import Foundation
import UIKit
import GoogleMobileAds


class NaniMenuViewController: UIViewController ,UITableViewDelegate, UITableViewDataSource{
 ・・・
    //NotificationCenterのインスタンス
    let notificationCenter = NotificationCenter.default
    override func viewDidLoad() {
	    ・・・
        // MARK:+++++  NotificationCenterにaddObserverの登録する
        notificationCenter.addObserver(self,
                                       selector: #selector(catchNotification(notification:)),
                                       name: .myOrientationName,
                                       object: nil)
		・・・
    }


    // MARK: -⚡️-----  NotificationCenterに 通知を受け取りたい側
    func catchNotification(notification: Notification) -> Void {
        SettingAdMobView()
        
        //回転Posの変更
        // MARK:+++ setTableViewPositon()
        setTableViewPositon()

    }


 ・・・
}

extensionとNotificationCenterの方法をすると、覚えて置くと、結構便利ですよ。

PortraitとLandscapeのTableviewの表示更新は、setTableViewPositon()でしています。

ー・ー・ー
ではでは。

    上に戻る