NSStackView의 하위 클래스를 만들려고합니다. 예를 들어 NSStackView에 특수한 색상을 지정하려고합니다.NSStackView의 하위 클래스 만들기
인스턴스를 생성하려면 올바르게 이해하면 init로 지정된 수퍼 클래스를 호출해야합니다.
NSStackView의 지정된 초기화 프로그램을 어떻게 찾을 수 있습니까?
init(views: [NSView])
하지만 컴파일하지 않고 다음 코드는
class CStackView: NSStackView
{ init(views: [NSView], withColor color: NSColor)
{ super.init(views: views)
// do something wich the color
}
required init?(coder decoder: NSCoder)
{ fatalError("init(coder:) has not been implemented")
}
}
초기화 (코더 '슈퍼 클래스'NSStackView '의 지정 초기화를 호출해야 ": https://developer.apple.com/documentation/appkit/nsstackview 보면 내가 찾을 수있는 유일한 초기화는 다음과 같습니다) 지정된 이니셜 라이저 것으로 보인다하지만 CBSackView 해당 코코아가없는 subviews init 싶습니다.
는, 그때는 super.init (프레임 :) 또는는 super.init (코더 :)를 호출하는 내 자신의 클래스의 지정 초기화를 호출해야합니다. NSStackViews init (views :)를 호출 할 기회가 없다. 그 맞습니까? – mik
여기서 알 수 있듯이, init (views :)은 편리한 초기화 프로그램입니다 (컴파일러 오류 제외). – mik
자신 만의 편의 초기화 프로그램을 작성하면 하위 클래스가 자신이 지정한 초기화 프로그램을 선언하지 않은 경우'self. {superclass convenience initializer} '를 호출 할 수 있습니다. – dan