2012-12-13 4 views
1

보기 컨트롤러를 재사용하는 방법이 명확하지 않습니다. 만약 당신이 뷰 컨트롤러의 서브 클래스를 생성했다면 (실제로 무엇을하는지 상관하지 않고, 뷰에서 필요한 것을 수행한다), 다른 뷰와 함께 사용할 수 있는가? 다시 서브 클래 싱되어야 하는가? 나는 내 응용 프로그램의 다른 부분에보기에서 동일한 기능을 필요로하는 경우 즉보기 컨트롤러 재사용

, 나는 원래 뷰 컨트롤러를 사용하고 단지 새로운 뷰에서 콘센트를 추가 할 수 있습니까? 아니면 사용자 지정 컨트롤러를 서브 클래 싱하고 뷰에 "자체"보기 컨트롤러를 부여해야합니까?

+0

일반적으로 각 컨트롤러에는 자체보기가 있습니다. 물론 코드 중복을 피하기 위해 뷰를 재사용 할 수있는 방식으로 모델링해야합니다. 이 문제에 문제가 있으면 MVC 구조를 재고해야합니다. – GGrec

+0

동일한 컨트롤러에서 여러 개의 동일한 뷰에서 콘센트를 가져 오는 것이 "정확합니까?" – Bob

+2

"바보 같으면 작동하지만 바보가 아니야." – GGrec

답변

3

당신은 뷰 컨트롤러에 대한 두 xibs을 만들 수 있습니다.

당신이 파일이있는 경우

...
MyViewController.m 
MyViewController.h 

그런 다음 당신이 xibs를 추가 할 수 있습니다 ...
MyViewControllerXib1 
MyViewControllerXib2 

그냥 "파일의 소유자"MyViewController을합니다. 그런 다음

당신이 호출 할 수있는 최초의 XIB의 UI 레이아웃을 필요로 ...

MyViewController *controller = [[MyViewController alloc] initWithNibName:@"MyViewControllerXib1" bundle:[NSBundle mainBundle]]; 

당신이 호출 할 수있는 두 번째 UI를 필요

...

MyViewController *controller = [[MyViewController alloc] initWithNibName:@"MyViewControllerXib2" bundle:[NSBundle mainBundle]]; 

목적 당신 get은 똑같지 만 UI를 배치 한 펜촉은 바뀔 것입니다.

그냥 큰 소리로 여기 생각하는 또 다른 방법.

또한 펜촉없는의 ViewController를 만들 수 있습니다.

는 그런 다음 펜촉이 각각의 두 서브 클래스를 생성합니다. 이제 코드를 재사용하고 레이아웃을 분리 할 수 ​​있지만 "마스터"컨트롤러의 각 하위 클래스에 미세 조정을 적용 할 수 있습니다. 이 마스터 뷰 컨트롤러에서 원하는대로

그런만큼 서브 클래스를 생성 할 수 있습니다.

사용 스토리 보드

그냥 스토리 보드에 새로운의 ViewController 개체를 끕니다. 클래스를 뷰 컨트롤러 클래스로 변경하고 UI를 설정하고 컨트롤을 코드 등으로 드래그합니다. 그러면 모양이 다르지만 동일한 기능 코드를 공유하는 두 개의 화면이 표시됩니다.

이것은 단지 내가 대신 첫 번째하지만 사용하여 스토리 보드에서 말과 동일합니다.

+1

저는 IOS 개발을 배우고 xibs 또는 nibs에 대해 전혀 모릅니다. 방금 Storyboards를 사용하여 앱을 레이아웃했습니다. 그리고 용어가 혼동 스러울 수도 있습니다. 내가하고 싶은 일은 두 번째 뷰 컨트롤러를 내 앱의 다른 부분으로 드래그하는 것입니다. 그런 다음 Identity Inspector에서 컨트롤러 클래스를 지정해야합니다. 기존 서브 클래스를 재사용 할 수 있습니까? 아니면 새 서브 클래스를 만들어야합니까? – Bob

+1

아하이 봐요. 예. 스토리 보드로도 할 수 있습니다. 내 탐색에서 어느 시점에 VC (VC1)가 있다고 이해합니다. 그런 다음 앱에서 돌아 다니면서 VC1과 동일한 기능을하지만 다른 레이아웃을 가진 다른보기 컨트롤러 (VC2)로 이동합니다. (옳은?). 이 경우 새로운 VC를 스토리 보드로 드래그하고 클래스를 동일하게 설정하고 레이아웃을 변경하십시오. 이것은 본질적으로 내가 말했지만 별도의 xib 대신 스토리 보드를 사용하는 것입니다. – Fogmeister

관련 문제