DirTy™의 하루일과/DirTy™의 가당찮은iOS

[IOS] containerview를 사용해보자.

DirTy™ 2015. 10. 26. 14:46

항상 storyboard + xib 형식으로 프로젝트를 만들어왔다.

스터디를 갔다가 우연히 containerview에 대한 이야기를 들었다.

역시 사람은 아는만큼 보인다고 이런방식이 있는 줄 조차 몰랐고 사용해보니

오히려 더 깔끔하게 사용이 가능한것 같았다.


기본적인 사용법에 대해 알아보자.

일단 아래와 같이 storyboard를 이용하여 containerview를 추가해보자.

auto layout도 아래와같이 테스트용으로 width = 200, height=180고정으로 주고

각 뷰를 centerX, centerY로 설정하자.



containerview를 추가하면 아래와같이 자동으로 embed 된 segue가 자동으로 설정된다. 



이제 embed 된 segue의 identifier를 아래와같이 testsegue로 설정하자.




추가한 컨터이네 뷰에서 사용할 File을 아래와 같이 추가해 보자.





컨터이너뷰에서 테스트용도로 만든 Label을 아래와 같이 IBOutlet으로 만들어주자.

추가로 Label의 text를 변경하기 위해 NSString 변수를 하나 만들어주자.



일단 containerview를 해당 viewcontroller에 추가하게되면 기본적으로 embed segue가 추가가된다.

이는 곳 사용하게 될 해당 viewcontroller에서 기본적으로 내장된 view라고 판단하고

segue를 사용하게 되는 아래의 메서드가 처음에 기본적으로 호출되게 된다는 점이 특이점이다.

 

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender


정말 prepareForSegue가 먼저 호출되는지 확인해보자.

아래와 같이 코드를 추가해보자.




해당 MainViewController의 viewdidload와 prepareForSegue에 브레이크 포인트를 걸어보자.

첫번째로 prepareForSegue가 호출되고 그다음에 해당 MainViewController의 viewDidLoad가 호출되는 것을 확인 할 수 있다.


이제 위의 prepareForSegue에서 설정한 text가 제대로 나오는지 확인해보기 위해

containerview인 TestLabelViewController의 viewDidLoad에 아래와 같이 추가해본후 시뮬레이터를 구동해보자.




아래는 시뮬레이터에서 구동해본 결과값이다.

제대로 변경된 값이 설정되었다.



이와같이 간단하게 containerview에 대한 사용법에 대해 알아보았다.

xib보다 간단히 auto layout작업도 가능한것 같고 여러가지로 뷰컨트롤러에 추가하여 사용하기 아주 좋은것같다.

왜 진작 몰랐나... 내 정보력이 한스럽기 그지없다.