2016-03-22 11 views
2

私はiOS開発を初めて使いました。これは簡単な質問かもしれません。私のアプリケーションには、同様のプロパティを共有する多くのビューコントローラがあります。 UIViewControllerをサブクラス化するベースビューコントローラクラスを作成しました。他のすべてのビューコントローラは、ベースビューコントローラをサブクラス化します。ただし、ベースビューコントローラクラスで設定したプロパティは継承されません。たとえば、ナビゲーションバーのボタンはすべて緑色である必要がありますが、アプリを作成するときはデフォルトの青色です。ベースUIViewControllerクラスからプロパティを継承できません

ここでは、ベース・ビュー・コントローラ・クラスです:

class BaseViewController: UIViewController { 

override func viewDidLoad() { 
    super.viewDidLoad() 
    self.navigationItem.leftBarButtonItem?.tintColor = UIColor.greenColor() 
    self.navigationItem.rightBarButtonItem?.tintColor = UIColor.greenColor() 
} 

これは、上記の基本ビューコントローラのサブクラスほかのView Controllerのコードです:私は、ウェブを検索し、SOのためにきた

class AboutViewController: BaseViewController { 

override func viewDidLoad() { 
    super.viewDidLoad() 
    self.title = NSLocalizedString("About", comment: "About page title") 
} 

を同様の質問があったが、答えを見つけることができなかった。私は基本的に私のコードに間違いがないとは思わない。私はXcode 7.2.1を使用しており、iOS 8+でテストしています。 Xcode 7.2.3ベータ版でもテストされていますが、同様の結果が得られました。

+0

新しいプロジェクトを作成しようとしましたが、問題を再現できませんでした。説明したように、新しいプロジェクトを作成して 'viewDidLoad'をオーバーライドすることで、自分自身で確認できます。これは、問題がコードベースのどこか他の場所にあることを意味します。 –

+0

@RudolfAdamkovicあなたのご意見ありがとうございます。私はちょうど新しいマスター/ディテールプロジェクトを作成しました。追加したのは、UITableViewControllerをサブクラス化する新しいベーステーブルビューコントローラクラスを作成することだけでした。 viewDidLoadメソッドをオーバーライドして、左と右のbarButtonItemを特定の色に設定します。私はMasterViewControllerクラスをこのベースビューコントローラから継承させ、色はまだ継承されませんでした。私はここで何かを見逃しているかもしれないが、まだそれを見ているかもしれないと思う。 – ussd84

答えて

1

私が見るところでは、これは継承の問題ではありません。 BaseViewControllerのviewDidLoadにブレークポイントを設定すると、実際にそのコードが実行されます。あなたの問題は、色合いの色を変更する方法にあると思います。 iOSのナビゲーションバーをカスタマイズすることは、通常はナビゲーションコントローラを使用しなくなり、自分のトップバービューを作成して完全にカスタマイズできるような苦痛です。

あなたはapplication(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?)関数内であなたのAppDelegateファイルにこのコードを入れて、あなたの全体のアプリケーションの両方の左と右のバー項目の色合いの色を変更しようとしている場合:

UINavigationBar.appearance().tintColor = UIColor.greenColor() 

ここに私がいることを作成したブログ記事ですUINavigationBarの他の色を変更する方法を示しています:Navigation Bar Colors

+0

ありがとう、これは私が取るかもしれないパスかもしれません。私はまた、それが継承の問題だとは思っていませんが、なぜそれがうまくいかないのだろうと思っています。私はこれをテストするために別のクリーンなプロジェクトを始めましたが、同じ問題に直面しました。上記の私のコメントを参照してください – ussd84

関連する問題