2016-09-03 9 views
1

いくつかのナビゲーション項目と明らかにタイトルを除いて、異なるビューコントローラのすべてのナビゲーションコントローラで同様のプロパティを使用します。swift - UINavigationController拡張機能が動作しない

私はそれを呼び出すことができるように計画して、私のデフォルトを設定しました。しかし、何もしません。私はSetDefaultsを呼び出すときではなく、実際のクラスに配置するだけで、コードは動作します。

拡張:navigationcontrollerを持つクラスからSETDEFAULTSへ

extension UINavigationController { 
    func setDefaults(titleText: String){ 
     let appDel = UIApplication.sharedApplication().delegate as! AppDelegate 

     //Set title label 
     let label = UILabel() 
     label.font = UIFont(name: appDel.regularDefaultFont, size: 16) 
     label.text = titleText 
     label.kern(1.0) 
     label.sizeToFit() 
     self.navigationItem.titleView = label 

     //Set white background tint color 
     self.navigationBar.barTintColor = UIColor.whiteColor() 

     //Set navigation bar bottom line 
     let bottomBorderRect = CGRect(x: 0, y: UIScreen.mainScreen().bounds.height, width: UIScreen.mainScreen().bounds.width, height: 1) 
     let bottomBorderView = UIView(frame: bottomBorderRect) 
     bottomBorderView.backgroundColor = UIColor(r: 250, g: 250, b: 250) 
     navigationBar.addSubview(bottomBorderView) 
    } 
} 

コール:他の または単に1つのビューコントローラを接続しているときにshowSegueタイプを選択する必要があり

あなたのストーリーボードで
self.navigationController.SetDefaults("Login") 
+0

あなたはあなたの拡張機能にブレークポイントを設定し、それに達していますかどうかを確認することができます...水の流れのように動作しますか? – kabiroberai

+0

実際に正しいナビゲーションコントローラで 'setDefaults'を呼び出すことを確認してください。 UISplitViewControllerを使用している場合は、ビューコントローラ自身のナビゲーションコントローラのプロパティが画面上のものではない可能性があります。 – Luke

+0

kabiroberai、私はそれを試みました。 @ルーク私はちょうど示したビューコントローラでsetDefaultsを呼び出しています。これは正しいです? View Controllerを表示するために使用するコードを見るには、以下のレスポンスへの私のコメントをチェックしてください。 – Walker

答えて

0

あなたのセグを選択>属性インスペクタで>ストーリーブックsegue>種類>ショー(例えば)プッシュ。この画像

enter image description here

に示すよう それは恒久的に問題を解決します:)

+0

Faiz、コードでビューコントローラを表示しています。また、vcLoginコントローラで設定されたデフォルトを呼び出しています。正しいのですか? – Walker

+0

@Walker、新しい回答を確認してください&それが動作するか完璧な解決方法を教えてください –

0

あなたのコードは次のようになりべきです。

let vcLogin = loginViewController(
      nibName: "loginViewController", 
      bundle: nil) 
     navigationController?.pushViewController(vcLogin, 
      animated: true) 

がうまくいけば、これは

+0

@Walker、あなたは自分のコードに従っていますかあなたの側で今働いていますか? フィードバックをお寄せください –

関連する問題