2015-02-06 8 views
1

그래서 기본 매개 변수 값으로 재미있게 지내 왔습니다. UIViewController를 선택적 매개 변수의 기본값으로 사용하지만 "X는 Y라는 멤버가 없습니다"라는 오류가 발생합니다.

class containerViewController: UIViewController { 
    var detailView:UIViewController? 

    override func viewDidLoad(){ 
     super.viewDidLoad() 
     detailView = anotherViewController() 
    } 

    func hideDetailView(vc:UIViewController? = detailView){ // <- THIS LINE 
     // code 
    } 
} 

필자가 표시된 라인

오류가 발생합니다 :

'containerViewController.Type' does not have a member named 'detailView' 

필자는 온라인 including this question을 읽고,하지만 난이 문제를 해결하는 방법을 알아낼 기운 다.

내가 원하는 것은 hideDetailView()을 사용할 수 있고 특정 뷰 컨트롤러를 해당 함수의 매개 변수로 보내면 특정 뷰 컨트롤러가 숨겨집니다. 매개 변수를 보내지 않으면 detailView 매개 변수에있는 현재보기 컨트롤러가 숨겨집니다.

어떻게하면됩니까?

답변

1

nil을 기본값으로 사용하고 본문에 nil이 있는지 확인할 수 있습니다.

func hideDetailView(vc:UIViewController? = nil){ // <- THIS LINE 
    let vc_ = vc ?? detailView 
    // code 
} 

그러나이 경우, 당신은 구별 할 수 다음 통화 : 당신이 마음에 들지 않으면

// passing `nil` as Optional<UIViewController> 
let vc:UIViewController? = nil 
container.hideDetailView(vc: vc) 

// use default value 
container.hideDetailView() 

, 당신은 UIViewController?? 사용할 수 있습니다

func hideDetailView(vc:UIViewController?? = nil){ 
    let vc_ /*: UIViewController? */ = vc ?? detailView 
    // code 
} 
+0

우아한 해결책! 많은 감사합니다! – Jimmery