2012-05-19 2 views
0

저는 iOS 개발을 처음 접했습니다. 일반적으로 인터페이스 작성기를 사용하는 대신 코드에서 모든 내 UIViews, UILabels, UIButtons 등을 만듭니다. 이렇게하면 UIViewController가 매우 커지고 쉽게 따라갈 수 있으며, 콘센트 선언과 실제 작업 및 논리가 혼합됩니다. 내가 달성하고 싶다 무엇iOS 코드 구성 패턴

- (UIButton *) continueButton { 
    // if button is nil 
    if(_continueButton == nil) { 
     UIButton *button  = [[UIButton buttonWithType:UIButtonTypeCustom] retain]; 

     /* more configuration */ 

     _continueButton = button; 
    } 
    return _continueButton; 
} 

// occures when continue button is tapped 
- (void) buttonTouch:(id) sender 
{ 
    UIButton *button = ((UIButton *)sender); 

    if(button == continueButton) { 
     /* do stuff */ 
    } 
} 

다른 파일에있는 버튼, 라벨 및 기타 뷰 '선언을 실제 행동, 애니메이션, 로직을 분리하는 등, 하고 저장하는 것입니다.

솔루션으로 나는 콘센트가있는 다른 UIViewController를 만들고 "addChildViewController"를 사용하여 로직을 보유하고있는 메인 UI 내부에 자식으로 포함시킬 생각을하고있었습니다.

이것이 올바른 방법일까요? 어떻게 처리합니까?

+0

당신이 할 수있는 컨트롤러의 유틸리티의 종류에 대한 가고 싶어 재사용 했어? – rishi

+0

아니, 난 그냥보기에서 논리를 분리하는 가장 좋은 방법이 궁금 해서요. 저는 웹 배경에서 폼과 다른 UI 요소를 정의하는 템플릿과이를 처리하는 컨트롤러를 가지고 있습니다. – Hidden

+3

자신에게 유리하게 인터페이스 빌더를 사용하십시오. 코드에서 그런 일을하는 것이 나쁜 생각 인 이유를 알기 위해 의존성 삽입에 대해 읽어보십시오. IB는 – Sven

답변

2

나는 이것이 잘못된 길로 가고 있다고 생각합니다. IB를 사용하는 것은 대부분의 경우에 현명한 방법입니다. Xcode는 UI 요소에 대한 코드를보다 효율적으로 작성합니다.

또한 IB와 보조 에디터를 사용하면 작업을 훨씬 빠르고 효율적으로 처리 할 수 ​​있습니다. 또한 필요한 경우 클린업 코드가 추가되도록합니다.

구현 파일 내에서 코드를 구분하려면 #pragma mark -을 사용하여 내 Outlet 선언을 내 동작 선언과 분리 한 다음 다른 메소드의 Actions 메소드를 항상 맨 위에 배치하십시오.

아울렛을 공개적으로 게시해야하는 경우가 아니면 개인적으로 콘센트의 속성을 선언합니다. 내 구조 :

  • 내 대리자 메서드
  • 다음 상단
  • 작업에서

    • 내 방법
    • 애플의 방법
  • +1

    +1입니다. 최고의 코드 행은 작성할 필요가없는 코드 행입니다. –

    +0

    감사합니다. IB에게 한 번만 더 촬영하겠습니다. 일부 경우에는 다소 제한적입니다. – Hidden

    +1

    나를 믿어 라. 장기적으로 우리에게 감사 할 것이다. UI 사용에 대한 생산성은 IB 사용을 거부하는 사람들과 함께 작업 한 다른 개발자의 2 ~ 3 배입니다. 경험을 통해 지각 된 한계를 극복하는 방법을 알 수 있습니다. 물론 어떤 경우에는 IB가 답이 아니지만 대다수의 경우에는 그럴 수 있습니다. –