개발...................../TIL

View Hierarchy 관련 오류

bluewiper 2024. 6. 30. 18:26

 

 

    @discardableResult

    public func equalToSuperview(_ file: String = #file, _ line: UInt = #line) -> ConstraintMakerEditable {

        guard let other = self.description.item.superview else {

            fatalError("Expected superview but found nil when attempting make constraint `equalToSuperview`.")

        }

 

원래 제약조건 아래에

        //view
        [label]
            .forEach { view.addSubview($0) }

 

를 작성했는데 제약조건에서 equalToSuperView만 쓰면 오류가 나서 확인하니 superView가 nil값이어서 쓸 수 없다는 메시지였다. 

 

해결방법

superview가 정상적으로 만들어지지 않은 상황에서 equaltoSuperView 호출해서 생긴 오류였다.

 

해결

제약조건을 세우기 전에 view를 생성하니 오류가 사라졌다. 위 코드에서는 view.addSubview(label)를 constraints 설정 이전에 호출하여 label이 view hierarchy에 제대로 추가된 후에 constraints가 적용되도록 했다. 이렇게 하면 constraints 설정 시 label의 superview가 정상적으로 설정되어 있어 오류가 발생하지 않는다.