HOME > UINavigationController
UINavigationController
TabBarとUITableViewControllerを利用して一つのUIViewControllerだけをクリックすると右にスライドするUINavigationControlerを 利用したサンプルを記載します。というのも、AppDelegate内でUINavigationをself.windowのrootviewcontrollerにセットする 方法は多々あったのですが、AppDelegate内を利用しないでNavigationを実装する方法がなくハマっていましたのでを以下記載します。
参考:JavaScriptプログラマがSwift iOSアプリを2週間で作って公開してみた〜その5 UITabBarController & UINavigationController〜
参考:012 UINavigationControllerの表示
参考:How to add an UINavigationController to an existing UIViewController programmatically
やってみた
UITabViewControllerの方法は割愛します。既にMainTabViewController (UITabViewController) と読み込まれるfirstView (UIViewController) とsecondView (UIViewController) が作成されていることが前提です。以下の画像のような状態。
参考:013 UITabBarControllerでタブの表示
この状態で修正コードを記載します
変更前
import UIKit
class MainTabViewController: UITabBarController {
var firstView: FirstViewController!
var secondView: SecondViewController!
override func viewDidLoad() {
super.viewDidLoad()
firstView = FirstViewController()
secondView = SecondViewController()
firstView.tabBarItem = UITabBarItem(tabBarSystemItem: UITabBarSystemItem.Featured, tag: 1)
secondView.tabBarItem = UITabBarItem(tabBarSystemItem: UITabBarSystemItem.Bookmarks, tag: 2)
self.setViewControllers([firstView, secondView], animated: false)
}
}
↓
変更後
import UIKit
class MainTabViewController: UITabBarController {
var firstView: FirstViewController!
var secondView: SecondViewController!
override func viewDidLoad() {
super.viewDidLoad()
firstView = FirstViewController()
secondView = SecondViewController()
firstView.tabBarItem = UITabBarItem(tabBarSystemItem: UITabBarSystemItem.Featured, tag: 1)
secondView.tabBarItem = UITabBarItem(tabBarSystemItem: UITabBarSystemItem.Bookmarks, tag: 2)
var secondViewNavigationController = UINavigationController(rootViewController: secondView)
secondView.title = "UINavigationControllerです";
self.setViewControllers([firstView, secondViewNavigationController], animated: false)
}
}
TabViewController[firstView]と[secondViewを追加したnavigationcontroler]を追加しています。
ナビゲーションの画面上部のバーを消す方法
以下のBarHiddenプロパティを利用して表示を消します
self.navigationController.navigationBarHidden = NO;//Yes = 表示, No = 非表示
ナビゲーションの画面上部のバーの高さを取得する方法
以下のnavigationコントロールのサイズから取得します
let navBarHeight = self.navigationController?.navigationBar.frame.size.height
まとめ
この方法も頻繁に使用していたのですが、いつも忘れていましたので、どなたかの助けになれば幸いです。
↓こんな記事もありますよ!
![]() | UIScrollViewでパラパラ画像切り替え画像のパラパラ切り替えフォトギャラリーを作成できます。大きな画像の一部分だけを切り抜きしてマスク表示するクラスです。 |
![]() | UITabBarControllerスマホ画面下にタブが出てきて画面を切り替えできるUITabBarViewControllerクラスです。UITabBarItemの記事を追加しましたがUITabbarの記事がなかったので追加しました。(※目のチカチカにご注意ください。) |
![]() | willsetとdidsetでプロパティを監視。意味あるのか???クラスのプロパティにはWillsetとdidsetという監視用の関数があると聞いたのですが、用途は分かるにしても メリットとしてはどういうものなのかなと、うーん、と考えていました。調べていると海外のサイトでは同じように疑問にもつ質問があがっていました。 getとsetで同じことができるのでは?との私と同じスタンスです。解決されていましたので、順に説明していきます。 |
Tweet
![]() |
|||
|