2013-04-01 2 views
0

보기를 만드는 데 storyboards/xib를 사용하지 않고 앱을 작성하고 있으며 내보기 설정 코드를 삽입하기 가장 좋은 장소인지 확신 할 수 없습니다. 몇 가지 다른 접근법을 시도했지만보기 코드를 컨트롤러 코드와 별도로 유지하는 가장 좋은 방법은 확실치 않습니다. 내가 지금까지 시도프로그래밍 방식으로 iOS 앱보기를 만드는 방법

접근 방법은 다음과 같습니다

  1. 컨트롤러 viewDidLoad 방법 내부 등 모든 내보기 설정 코드 (작성 및 위치 버튼/레이블) 퍼팅. 나는 이것이 컨트롤러 내부에 많은 코드로 끝내는 것처럼 나쁜 일을하는 방식이라고 확신한다.

  2. UIView을 서브 클래 싱하고 initWithFrame 메소드 내에 인터페이스 요소를 설정하십시오. 그런 다음 뷰 컨트롤러 뷰 위에이 뷰를 추가합니다.

    _customView = [[CustomView alloc] initWithFrame:self.view.frame]; 
    _customView.customLabel.text = @"Foo"; 
    [self.view addSubView:_customView] 
    

가 아니면 컨트롤러 내 customView로 볼 할당합니다. 가능한 한 비 주관적으로이 질문을 유지하려고 하다니

_customView = [[CustomView alloc] initWithFrame:self.view.frame]; 
self.view = _customView; 
_customView.customLabel.text = @"Foo"; 

, 프로그래밍 방식으로 아이폰 OS의 인터페이스를 만들 수있는 가장 좋은 방법은 무엇입니까? 이러한 접근 방법 중 하나가보기 코드와 컨트롤러 코드를 분리하여 재사용 할 수있는 좋은 방법입니까?

+0

해당 코드를 다시 사용해야합니까? 그렇다면 서브 클래 싱 또는 UIView에 대한 카테고리 확장 생성은 괜찮습니다. 이 경우 하위 클래스를 선호합니다. –

+0

그래도 코드는 가능한 한 재사용 가능하고 깨끗하게 작성해야합니다. 서브 클래 싱이 잘 작동한다고 생각합니다. 서브 클래 싱 된 뷰를 사용하는 가장 좋은 방법은 확실하지 않습니다. 아마도 어느 쪽이든 괜찮습니다. – AFraser

답변

1

해당보기를 한 번만 사용해야하는 경우 코드를 viewDidLoad 방법으로 두십시오. 컨트롤러 내의 특정 메소드에서 뷰를 생성하는 데 필요한 코드를 이동할 수도 있습니다.

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    // other code here... 
    [self createView]; 
} 

또한, 당신은 또한 loadView 방법을 무시하고보기는 컨트롤러의 view 될 것입니다 경우이 코드를 넣어 생각 할 수있다. Apple doc.

수동으로보기를 만들려면이 방법을 재정의 할 수 있습니다. 이렇게하려면보기 계층 구조의 루트보기를 view 속성에 할당하십시오. 여러 번 당신의보기를 인스턴스화해야하는 경우

, 나는 UIView를 서브 클래스와 컨트롤러와 함께 comunicate 수 위임 패턴을 사용합니다.

이 방법을 선택하는 경우보기 내에서 어린이를 정렬하려면 layoutSubviews 메서드를 재정의해야합니다.

이 예는 How To Make a Custom UIView in iOS 5: A 5 Star Rating View에 있습니다.

+0

좋아,이 방법이 가장 간단한 방법이지만 이것이 '뚱뚱한'컨트롤러를 갖고 iOS 앱에서 사용하는 MVC 디자인 패턴을 위반하지는 않는다는 것을 알 수 있습니까? – AFraser

+0

@Afraser 아니요, UIViewController가 아니라 UIView를 서브 클래 싱합니다. 그것들은 다른 것들입니다. –

+0

@Afraser IMHO,이 방법은 매우 깨끗합니다. 뷰를 서브 클래 싱합니다.당신은 delgate 컨트롤러와 comunicate. 당신의 코멘트에 무엇을 의미합니까? –

관련 문제