초기 장면으로 TabBarController가 있습니다. 모든 탭은 기본적으로 동일한 정보를 사용합니다. 이 정보는 런타임에만 사용할 수 있으며 json을 통해 검색됩니다. 정보는 내 앱에 의해 변경되지 않지만 반대편에서 변경 될 수 있으며 다음에 새로 고침 할 때 달라질 수 있습니다.TabBarController에 대한 데이터 소스로 싱글 톤을 피해야합니까? (그리고 어떻게 할 수 있습니까?)
싱글 톤에 대한 유효한 사례입니까?
은 내가 TabBarController 작성하고 탭에게 전달되기 전에 정보를로드에 대해 생각했지만, 지금은 몇 가지 단점에 직면하고있다 : (큰 AFAIK으로 모두의 앞에)
- UI가 채워지기 전에 검색이 이루어지며 느린 연결로 시간이 걸릴 수 있습니다.
- 백만 건의 알림 없이는 정보를 새로 고침 할 수 없습니다. 계층 구조로 다시 전달할 수 없기 때문입니다.
- 앱을 시작/오프라인으로 작업 할 수 없으며 나중에 온라인으로 전환 할 수 없습니다.
- 모든 탭 초기화를 덮어 써야하기 때문에 스토리 보드 TabBarController에서 작동하지 않습니다.
정보를 담고있는 단 하나의 단점으로 내가 지금까지 볼 수있는 단점은 내가 직접 가리키면 UI가 엉망으로 보이게 만들 수 있다는 것입니다. 그러나 나는 정말로 유혹하는 모든 탐색 계층에서 모든 액세스 권한을 갖습니다.
다른 가능한 솔루션/최상의 방법으로 TabBarController 내에서 데이터를 공유하는 방법이 있습니까?
나는 단어 싱글 톤 사용이 즉시 종료되지 않습니다 희망... :)
탭 표시 줄 컨트롤러를 서브 클래 싱하고 모든 콘텐츠 컨트롤러의 데이터 소스로 사용하는 방법은 어떻습니까? 공식적으로는 싱글 톤이 아닌 기능적으로는 데이터를 필요로하는 모든 컨트롤러가 viewControllers 배열의 일부인 경우 작동해야합니다. – rdelmar
네, 가능 합니다만, 내가 말했던 "단점"중 일부가있을 수 있습니다. 나는 스토리 보드 scences와 다른 애플 리케이션에서 이것을 시도 하고이 문제를 만났 : http://stackoverflow.com/questions/17532763/modify-storyboardtabbarcontroller-tabs-before-the-first-tab-loads (요약 : viewcontrollers 배열) tab35controller에서 비어 있습니다. – drUniversalis
당신의 문제는 (당신의 링크 된 질문에서) self.tabBarController.viewControllers를 사용했다는 것입니다 - 당신은 탭 바 컨트롤러 내에서 self.viewController를 사용해야합니다. – rdelmar