ios

Swift - error Value of type 'UIView' has no member 'addSubView'

Product ? Project ? IT ? 2023. 2. 1. 23:47

위와 같은 오류가 발생했습니다.

물론 단순한 대소문자의 오류였지만 만약 저런 오류가 나중에도 나온다면 저게 왜 저렇게 뜨는 것일까 궁금함에 찾아봤습니다.

xcode에서 나오는 오류에 대한 직역은 UIView에는 "addSubView'라는 멤버가 없다. 였습니다.

결론부터 말하면

addSubview()라는 메서드는 UIView 클래스에 정의가 되는 것입니다.

위의 코드를 작성할 때 ViewController안의 View에 Lable을 정의하였기 때문에 오류가 난 것입니다.

그러니 UIView 클래스가 아닌 UiViewController의 인스턴스를 사용해서 작성을 해준 것입니다.

self는 UIViewController의 인스턴스입니다.

self는 viewDidLoad(), addChildViewController() 등과 같은 메소드를 정의합니다.

물론 위의 간단하게 label은

위와 같이 작성을 하면 되긴 합니다.. ㅎㅎ;

그런데 만약

addSubview가 없다면??

AppDelegate에서 이런 오류가 나옵니다.

먼저 위의 코드는 label을 가운데에 맞추기 위해 작성을 한 것입니다.

AUtoresizingMask를 false로 준다음.

XAnchor / YAnchor X축과 Y축을 제약을 주는 것입니다.

equalTo를 사용하는 이유는 부모와 같이 제약을 두는 것입니다.

그러니까 일단 저 오류는 addSubview가 없어서 난 오류입니다.

그래서 addSubview가 뭔데??

What is view addSubview?

Adds a view to the end of the receiver's list of subviews.

 

네! 즉 하위 뷰의 리스트의 마지막에 뷰를 추가하는 것입니다.

애플 공식 홈페이지에 따르면

Discussion

This method establishes a strong reference to view and sets its next responder to the receiver, which is its new superview.

Views can have only one superview. If view already has a superview and that view is not the receiver, this method removes the previous superview before making the receiver its new superview.

superview를 가지는데, 그 뷰는 한개만 존재할 수 있다고 합니다.

해당하는 뷰가 reciver가 아니라면 addSubview를 사용해서 superview를 추가해줄 수 있다고 합니다.

즉 말 그대로 add 추가하다 subview 뷰

뷰를 추가해주는 것입니다.


또한 위에서 나온 AddDelegate의 오류는 제약을 준 후에 addSubview를 해주어도 오류가 발생하게 됩니다!

제약을 주기 전 addSubview를 해주어야합니다!