addSubView와 childViewController를 사용해서 화면 전환하는것 처럼 보이게 구현하는 경우도 있더군요.
그래파이트
IP 211.♡.133.116
05-20
2018-05-20 20:38:19
·
addSubView 사용은 비추합니다. 그리고
present의 경우 A - B 로
화면 전환이 끝나는 경우에 주로 사용하고
A - B - C... 등 여러번 화면 전환이 되는 경우
UINavigationController를 사용해서
pushViewController 함수로 화면 전환을 합니다
알랑빵구
IP 117.♡.16.110
05-21
2018-05-21 07:46:17
·
제가 아직 개념이 부족한거 같은데요.. 혹시 addsibview를 비추하시는 이유가 있으실까요?
그래파이트
IP 121.♡.239.81
05-22
2018-05-22 16:16:27
·
기본적인 이유는 아래 윈드로머님께서 설명해주셨네요.
추가적으로는 present나 push라는 화면 전환 함수가 이미 존재하는 상황에서
addSubView를 화면 전환을 위해 사용하는것은 용도에 맞지 않는다고 봅니다.
그리고 화면을 닫을 때에도 removeFromSuperview를 호출하는 등 더 복잡해집니다.
기본 화면 전환 함수를 사용하는 경우에는 dismiss나 popViewController,
popToRootViewController만 호출해도 되는 상황이구요.
addSubView와 childViewController의 정확한 용도는
embedded viewcontroller를 구현 할 때라고 생각합니다.
저는 Xib를 사용안하고 storyboard로 유지보수 생각하여 한 화면당 하나씩 다 각각 그립니다.
xib를 이용하여 addsubView를 한 목적은 아마도 화면 하나로 다른화면에서 계속 호출해서 그릴려고 만들때 주로 사용합니다.
윈드로머
IP 218.♡.133.223
05-21
2018-05-21 15:13:53
·
0. 코코아 터치 MVC 패턴에서,
UIViewController => Controller
UIView => View
모델은 정해진 바 없음.(정하기 나름)
UIViewController 는 프로퍼티(멤버 객체)로 View 를 가지고 있죠.
UIView는 다른 UIView를 subview(UIView : subviews)로 가질(참조) 수 있습니다.
Controller 는 View 에서 발생하는 각종 이벤트를 처리(터치,화면크기 변경-회전,입력)하고,
데이터(모델)이 변동 되면 View에 반영해줍니다.
1. Xib 는 각종 객체를 Interface Builder를 통해서 XML 형식으로 저장해둔 것입니다.
일반적으로 UIViewController 가 최상위 객체가 되죠.
다시 말하면 xib 는 UIViewController 의 인스턴스를 만들기 위해 만든 문서입니다.
2. 일반적으로 한 화면을 차지하거나, 시나리오 상 특정 상황을 나타내는 뷰는 UIViewController 인스턴스이어야 합니다.
그럼 최상위 View 가 있고, 그 밑에 해당 상황을 나타내기 위한 여러 Subview가 있겠지요.
3. 코코아터치의 Controller 는 View 와 기기의 여러 이벤트(흔들기, 회전, 터치 등등)를 처리하기 위한 기본 동작이 구현되어 있습니다.
4. 현재 상황과 UIViewController 가 1:1로 매칭되면 3번의 이벤트가 잘 처리 됩니다.
1:1이 되기 위해선, 화면(상태) 전환 시 UITabViewController, UINavigationController 를 이용하거나
UIViewController 의 presentViewController:animated: 를 이용하면 비교적 이 상태가 잘 유지 됩니다.
5. UIViewController 의 View 를 최상위 뷰로 표시하기 위해 UIView의 addSubview: 를 이용하면 4번이 잘 지켜지지 않게 됩니다.
(그래서 스크롤뷰에서 힘든 상황이 발생하기도 합니다)
6. xib 로 만들어도 presentViewController:animated: 를 호출 합니다.
addSubview 와 presentViewController:animated:는 파라미터 타입이 다르지요(View,ViewController)
둘의 용도를 혼돈 하시면 이해 할 수 없는 잠재 버그가 생깁니다.
삭제 되었습니다.
삭제 되었습니다.
새로운 댓글이 없습니다.
이미지 최대 업로드 용량 15 MB
업로드 가능 확장자 jpg,gif,png,jpeg
지나치게 큰 이미지의 크기는 조정될 수 있습니다.
present의 경우 A - B 로
화면 전환이 끝나는 경우에 주로 사용하고
A - B - C... 등 여러번 화면 전환이 되는 경우
UINavigationController를 사용해서
pushViewController 함수로 화면 전환을 합니다
추가적으로는 present나 push라는 화면 전환 함수가 이미 존재하는 상황에서
addSubView를 화면 전환을 위해 사용하는것은 용도에 맞지 않는다고 봅니다.
그리고 화면을 닫을 때에도 removeFromSuperview를 호출하는 등 더 복잡해집니다.
기본 화면 전환 함수를 사용하는 경우에는 dismiss나 popViewController,
popToRootViewController만 호출해도 되는 상황이구요.
addSubView와 childViewController의 정확한 용도는
embedded viewcontroller를 구현 할 때라고 생각합니다.
xib를 사용하였느냐
storyboard를 이용(ViewController)를 각각그려서 나타내느냐..
개발 차이지만
저는 Xib를 사용안하고 storyboard로 유지보수 생각하여 한 화면당 하나씩 다 각각 그립니다.
xib를 이용하여 addsubView를 한 목적은 아마도 화면 하나로 다른화면에서 계속 호출해서 그릴려고 만들때 주로 사용합니다.
UIViewController => Controller
UIView => View
모델은 정해진 바 없음.(정하기 나름)
UIViewController 는 프로퍼티(멤버 객체)로 View 를 가지고 있죠.
UIView는 다른 UIView를 subview(UIView : subviews)로 가질(참조) 수 있습니다.
Controller 는 View 에서 발생하는 각종 이벤트를 처리(터치,화면크기 변경-회전,입력)하고,
데이터(모델)이 변동 되면 View에 반영해줍니다.
1. Xib 는 각종 객체를 Interface Builder를 통해서 XML 형식으로 저장해둔 것입니다.
일반적으로 UIViewController 가 최상위 객체가 되죠.
다시 말하면 xib 는 UIViewController 의 인스턴스를 만들기 위해 만든 문서입니다.
2. 일반적으로 한 화면을 차지하거나, 시나리오 상 특정 상황을 나타내는 뷰는 UIViewController 인스턴스이어야 합니다.
그럼 최상위 View 가 있고, 그 밑에 해당 상황을 나타내기 위한 여러 Subview가 있겠지요.
3. 코코아터치의 Controller 는 View 와 기기의 여러 이벤트(흔들기, 회전, 터치 등등)를 처리하기 위한 기본 동작이 구현되어 있습니다.
4. 현재 상황과 UIViewController 가 1:1로 매칭되면 3번의 이벤트가 잘 처리 됩니다.
1:1이 되기 위해선, 화면(상태) 전환 시 UITabViewController, UINavigationController 를 이용하거나
UIViewController 의 presentViewController:animated: 를 이용하면 비교적 이 상태가 잘 유지 됩니다.
5. UIViewController 의 View 를 최상위 뷰로 표시하기 위해 UIView의 addSubview: 를 이용하면 4번이 잘 지켜지지 않게 됩니다.
(그래서 스크롤뷰에서 힘든 상황이 발생하기도 합니다)
6. xib 로 만들어도 presentViewController:animated: 를 호출 합니다.
addSubview 와 presentViewController:animated:는 파라미터 타입이 다르지요(View,ViewController)
둘의 용도를 혼돈 하시면 이해 할 수 없는 잠재 버그가 생깁니다.