2017-05-05 14 views
0

私はUINavigationControllerUINavigationControllerDelegateを継承するクラスを持っています。UINavigationController派生オブジェクトの初期化子を作成する方法は?

私はviewDidLoad()でデリゲートを設定しています:

self.navigationController?.delegate = self 

ものがスタックにプッシュされているよう(なwillShowdidShowなど)デリゲートメソッドが呼び出さ取得されていませんが。

このように、過去の質問を読み終えたら、デリゲートをviewDidLoadよりも初期化子に設定しようとしています。私は100万の組み合わせを試しましたが、コンパイルしたり、呼び出されたりしません。

はコンパイルされません:

convenience init() 
{ 
    super.init() 
    self.navigationController?.delegate = self 
} 

はコンパイルされません:

convenience init() 
{ 
    init(rootViewController: self) 
    self.navigationController?.delegate = self 
} 

は、ベースの事をしようと、上など

convenience init() 
{ 
    self.init() 
    self.navigationController?.delegate = self 
} 

そしていわゆる得ることはありませんコンパイラが言っていることは問題です。しかし、コンパイラは「selfを呼び出す」というようなことを言っているので、それを追加すると「呼び出しからselfを取り除く」というようになります。私は何百万という組み合わせを試して、過去の質問を検索し、イニシャライザをコピー/ペーストしようとしました。私はまだ何か働くことはできません。

答えて

1

selfUINavigationControllerであるため、ではなく、self.navigationController?.delegate = selfを使用する必要があります。

ナビゲーションコントローラのナビゲーションコントローラのデリゲートを設定しようとしています。しかし、あなたはナビゲーションコントローラを別のナビゲーションコントローラの中に置くことはできません。

関連する問題