(17)Unity3DとSwiftでiOSプログラミング~ NotificationCenter:01~Menuを作ろう【実装編6】
こんにちは。川上です。
=・=・=
今までで、縦型(Portrait)でTableViewを表示できました。
TableView内のCellの表示設定には、また、追い追いにしましょう。
まずは、TableViewの表示を横型(Landscape)にも対応しましょう。
既存の記事で、Uniyで検出した回転イベントを通信して受信していた関数に、
回転通知を各Controllerに同報周知(NotificationCenter)して、
受信したController内で表示を更新しましょう。
色々なClassのextensionをまとめて置くところように新規でFileで準備しました。
以下、NotificationCenterも設定順序です。
1.NotificationCenterのextension設定
1 2 3 4 5 6 7 8 9 | // CF_Lib.swift import Foundation import UIKit import SystemConfiguration // MARK: - Notification のextension extension Notification.Name { static let myOrientationName = Notification.Name("myOrientationName") } |
2.回転イベントを受信した関数の設定
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | //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の設定
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | //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()でしています。
ー・ー・ー
ではでは。