2017-05-05 1 views
0

UINavigationControllerUINavigationControllerDelegate을 상속받은 클래스가 있습니다.UINavigationController 파생 개체에 대한 이니셜 라이저를 만드는 방법은 무엇입니까?

내가 viewDidLoad()의 대리자를 설정 해요 : (예 : willShow, didShow로) 것들로 불리는되지 않아요 위임 방법은 스택에 밀어 그러나

self.navigationController?.delegate = self 

.

따라서 지난 질문을 읽은 다음 이니셜 라이저에 viewDidLoad보다 이전에 대리인을 설정하려고합니다. 백만 가지 조합을 시도했지만 컴파일되지 않거나 호출되지 않습니다.

는 컴파일되지 않습니다 :

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

라는받지 않습니다

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

을 등등 등등, 일을 시도 기반 :

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

컴파일하지 않음 컴파일러가 말하는 것은 문제입니다. 그러나 컴파일러에서는 "self을 호출하여 추가하십시오."라고 말하면 추가하기 때문에 "호출에서 self을 제거하십시오"라는 식으로 계속됩니다. 나는 수백만 가지 조합을 시도해 보았고 과거의 질문을 검색하고 이니셜 라이저를 복사/붙여 넣기를 시도했습니다. 나는 아직도 일하는 것을 얻을 수 없다.

답변

1

selfUINavigationController이므로 self.delegate = self이 아닌 self.navigationController?.delegate = self을 사용해야합니다.

네비게이션 컨트롤러의 네비게이션 컨트롤러의 델리게이트를 설정하려고합니다. 하지만 네비게이션 컨트롤러를 다른 네비게이션 컨트롤러에 넣을 수는 없습니다.

관련 문제