質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Swift 2

Swift 2は、Apple社が独自に開発を行っている言語「Swift」のアップグレード版です。iOSやOS X、さらにLinuxにも対応可能です。また、throws-catchベースのエラーハンドリングが追加されています。

Q&A

1回答

2722閲覧

NavigationControllerを使いながらDrawerを実装したいが、NavigationBarと黒い画面が表示される

DaikiOgawa

総合スコア15

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Swift 2

Swift 2は、Apple社が独自に開発を行っている言語「Swift」のアップグレード版です。iOSやOS X、さらにLinuxにも対応可能です。また、throws-catchベースのエラーハンドリングが追加されています。

0グッド

0クリップ

投稿2016/01/22 05:53

編集2016/01/22 09:42

storyboardを使わず、Swiftでナビゲーションバーをつくる(UINavigationControllerとか)
http://qiita.com/mochizukikotaro/items/f053495eb130e92e13e8

ドロワーメニュー(MMDrawerController)を、Swiftで使う
http://qiita.com/m1takahashi/items/e47c829ade34b4727631

【ゴール】
上記2つを参考にして、メイン画面を中心にNavigationControllerで遷移を実装しつつ、各画面からドローワーが使えるようにしたい

【構造】
起動時に表示されるrootView:NavigationController
NavigationContollerのrootView:DrawerController
DrawerControllerのrootView:MainViewController

【問題】
NavigationControllerのrootViewが真っ黒のViewになってしまう(読み込まれていない)

【コード】

Swift

1AppDelegate 2 3@UIApplicationMain 4class AppDelegate: UIResponder, UIApplicationDelegate { 5 6 internal var window: UIWindow? 7 8 var myNavigationController: UINavigationController? 9 10 var drawerViewController: SideMenuViewController! 11 var drawerController: DrawerController! 12 var noteMainViewController: MainViewController! 13 14 15 /* 16 アプリケーション起動時に呼び出されるメソッド. 17 */ 18 func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { 19 /* 20 let mainView: MainViewController = MainViewController() 21 myNavigationController = UINavigationController(rootViewController: mainView) 22 self.window = UIWindow(frame: UIScreen.mainScreen().bounds) 23 self.window?.rootViewController = myNavigationController 24 self.window?.makeKeyAndVisible() 25 */ 26 27 //ドローワー 28 // 中央に表示するビューコントローラー 29 noteMainViewController = MainViewController() 30 31 // 左メニューに表示するビューコンローラー(Drawer) 32 drawerViewController = SideMenuViewController() 33 34 // ドロワーコントローラーに、左メニューと中央画面をセット 35 self.drawerController = DrawerController(centerViewController: noteMainViewController, leftDrawerViewController: drawerViewController) 36 37 self.drawerController.showsShadows = false // 影付き 38 self.drawerController.restorationIdentifier = "Drawer" 39 self.drawerController.maximumLeftDrawerWidth = 240.0 // 幅240 40 self.drawerController.openDrawerGestureModeMask = .All // タッチ操作を全て受け付ける 41 self.drawerController.closeDrawerGestureModeMask = .All 42 43 self.window = UIWindow(frame: UIScreen.mainScreen().bounds) 44 let tintColor = UIColor(red: 29 / 255, green: 173 / 255, blue: 234 / 255, alpha: 1.0) // 文字色 45 self.window!.tintColor = tintColor 46 //ドローワーここまで 47 48 //NavigationViewのrootをDrawerContollerに設定 49 //let mainView: MainViewController = MainViewController() 50 let drawerController : DrawerController = DrawerController() 51 myNavigationController = UINavigationController(rootViewController: drawerController) 52 self.window = UIWindow(frame: UIScreen.mainScreen().bounds) 53 self.window?.rootViewController = myNavigationController 54 self.window?.makeKeyAndVisible() 55 56 //ドローワー 57 // ルートビューにセット 58 /* 59 self.window!.rootViewController = self.drawerController 60 self.window?.makeKeyAndVisible() 61 return true 62 */ 63 //ドローワー 64 65 66 return true 67 } 68

DrawerControllerを起動時に表示するrootViewに設定すると、Drawer自体はきちんと動きました。

よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

同じようなことをしようと思い検索した結果こちらに行き着きました。
似たようなコードを記述し動作も確認できたので、ついでに回答します。
MainViewControllerに何もUIオブジェクトを設定されておらず
初期の真っ黒画面が表示されているだけなのではないでしょうか?
MainViewControllerに背景色を設定して確認してみてはいかがでしょうか?
self.view.backgroundColor = UIColor.redColor()

投稿2016/06/25 14:51

kaji

総合スコア648

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問