2012-11-14 1 views
1

나는 스토리 보드에서이보기가 있습니다 view consist of fixed controls and controls that changes according to the type of controller여러보기를 제어하는 ​​가장 좋은 방법은 무엇입니까?

당신은 화면의 종류에 따라 변경 몇 가지 고정 된 컨트롤 등이있다 볼 수 있습니다. 당신은 무엇이 더 낫다고 생각하니?

1- 여러 화면에 대해 동일한보기 컨트롤러. (보기를 제어하는 ​​더 많은 코드)

2 모든 컨트롤을 동일한 화면에 추가 한 다음 코드별로 숨기고 표시합니까? (지저분한 코드)

3 각 화면에 대해 컨트롤러를 봅니다. (복제 된 코드)

답변

3

"창"이라는 단어를 사용하면 말의 의도와 다른 해석이 생길 수 있습니다. '화면'또는 '화면의 섹션'이라는 단어를 사용하십시오. 이 경우 UIViewControllers 컨테이너를 사용합니다. 그 사이에 통신하려면 KVO 또는 NSNotificationCenter (대개 두 번째 것)을 사용하십시오. UIViewController (배열 또는 사전과 같은)에 직접 데이터 소스가 없는지 확인하십시오. UIViewController (또는 모든 클래스)이 쉽게 액세스 할 수있는 곳에서 데이터 소스를 다른 곳에 보관하십시오. 당신은 싱글 톤과 함께 갈 수 있습니다.

데이터 소스를 멀리두고 UIViewController에 직접 배치하지 않으면 코드에 대해 더 많은 융통성을 제공합니다. 새로운 UIViewController을 사용해야 할 경우 아무 것도 변경되지 않고 계속 동일한 지점에서 자원을 요청할 수 있습니다. 그래서 그걸 명심하십시오.


편집 1

데이터 소스는 또한 동일한 화면의, 스크린 사이 상호 작용이없는보기 제어기 내부에 있지만, 일부 컨트롤 변경 그것의 유형에 따라 , 지금 내가 무엇을해야한다고 생각합니까 ?

접근 이런 종류의 문제는 당신이 당신이 지금 무엇을해야합니까, 즉 동일한 데이터 소스를 사용, 새로운 UIViewController을 추가 할 어떤 이유로, 필요한 경우이다? 나는 항상 데이터 소스에서 최대한 UIViewController의 디커플링을 시도한다. 그렇지 않으면 응용 프로그램이 변경되면 (클라이언트의 요구가 변경되는 경우) 나중에 문제가 발생할 수 있습니다. 데이터 소스를 적절한 클래스로 옮기고 싱글 톤을 사용하여 액세스하십시오.

UIViewController <=> Singleton <=> Data Source 

그래서 지금 당신은 여러 개의 화면으로 여러 뷰 컨트롤러를 확인하는 것이 좋습니다?

은 내가 UIViewController가 다른 UIViewControllers의 컨테이너 역할을하는 것이 좋습니다. 나에게있어 한 곳에서 모든 것을하는 것보다 화면을 구성하는 것이 더 합리적입니다.

+0

현재 모든 뷰는 동일한 뷰 컨트롤러를 가지고 있으며, 모두 동일한 뷰 컨트롤러에 연결된 콘센트를 가지고있다. 데이터 소스도보기 컨트롤러 안에 있으며 화면간에 상호 작용은 없으며 화면이 동일하지만 유형에 따라 일부 컨트롤이 변경됩니다. 지금 어떻게해야합니까? – Mhdali

+0

나는 그것이 '정복하기 위해 분열하는'것을 선호하지만 가능성이있다. – Peres

+0

모든 화면이 데이터 소스와 상호 작용하기 때문에 데이터 소스가 문제가되지 않으므로 여러 화면으로 여러보기 컨트롤러를 만들 것을 제안합니까? – Mhdali

0

나는 3 번으로 갈 것입니다.이 접근법은 가장 유연합니다! 그리고 그것은 깨끗함 => 유지하기 좋다.

관련 문제