2009-10-04 3 views
3

액션 스크립트에서 내 탭 네비게이터 컨트롤의 숨겨진 탭에 액세스하려고하면 null 오류가 반환됩니다. 하지만 일단 사용자 인터페이스에서 컨트롤을 한 번 활성화하면 정상적으로 작동합니다. 분명히 컨트롤을 사용할 때까지 컨트롤이 만들어지지 않습니다. 기본적으로 모든 탭을 자동으로 만들려면 어떻게합니까?플렉스 3 - 시작시 모든 컨트롤을 렌더링하도록합니다.

+1

왜 탭에 액세스하려고하는지 또는 인스턴스화되지 않은 다른 컨트롤에 액세스해야하는지 스스로에게 물어야합니다. dataprovider 또는 다른 바인드 가능 속성을 사용할 수있는 경우 해당 변수를 설정할 수 없습니다. – AndrewB

+0

@AndrewB - 네, 맞습니다. 필자는 두 개의 TAB (탭에 트리 컨트롤 포함)의 데이터 공급자로 하나의 XML 객체를 사용하고이를 코드에서 동적으로 설정합니다. 그래서 사용자가 인터페이스에서 뭔가를 할 때, 그녀를 초기화되지 않은 탭으로 이동시켜야합니다. 그 전에 트리 컨트롤의 dataprovider 속성을 설정하려고합니다 ... 따라서 오류가 발생합니다. 내가 각 탭에 대해 별도의 데이터 공급자를 가져야하며이를 업데이트해야하며 TAB이 필요할 때 데이터를 가져올 수 있습니다. 그러나 당신의 추론은 올바른 방향입니다. 감사. – captonssj

답변

12
<mx:TabNavigator creationPolicy="all"/> 

그렇게해야합니다. 지연 인스턴스는 기능이지만 때로는 번거 로움입니다.

+0

감사합니다. 그게 효과가 있었어! – captonssj

+0

예, 그건 항상 이상한 "WTF"입니다. 당신은 앞서 나가서 그것이 효과가 있다면 대답을 받아 들여야합니다. ;) –

0

Flex 프레임 워크는 기본적으로 생성이 최적화되어 있습니다 (creationPolicy = "auto"). 예를 들어 많은 탭이있는 구성 대화 상자가 있고 가장 유용한 탭이 첫 번째 항목 인 경우 응용 프로그램은 지출하지 않습니다 사용자가 볼 수없는 탭을 초기화하는 시간과 메모리.

이 같은 대화 상자가 절대로 출시 될 때 많은 차이가 발생하며 적절한 기본 기본값입니다.

한 가지 살펴볼 것은 숨겨진 페이지의 컨트롤에 데이터를 푸시하는 대신 대화/양식에서 개인 변수를 사용하는 것입니다. 이 스타일은 전체 양식을 마치 구성 요소 인 것처럼 취급합니다. 반복하려면 : MXML 양식/대화 상자/캔버스는 클래스이며 다른 구성 요소를 포함 할뿐만 아니라 데이터와 메서드를 포함 할 수 있습니다.

건배

보조 노트에
+0

참고로, 여러 뷰에서 사용되는 공유 데이터 수준 변수가있는 경우 별도의 클래스로 나누어 개체 참조를 통해 전달하는 것이 좋습니다. 또는 정적으로 [바인딩 가능]으로 설정하십시오. 이렇게하면 데이터를 초기화 할시기와 방법을 선택할 수 있으며 전역 또는 일부 액세스 루틴을 통해 바인딩 할 수 있습니다. 또한 기본 데이터 모델에서 UI를 분리하여 소프트웨어 디자인 신을 달래줍니다. 그러나 변수가 다른 UI 요소 인 경우 creationComplete 이벤트를 살펴보십시오. –

0

, 나는 다중 상태 응용 프로그램에서 연기 로딩 정책으로 실행하고, 포함 및 초기 상태에서 보이지 않는 될 모든 요소를 ​​강제로 그것을 회피했습니다. 고려해야 할 것이 있지만 해킹 일뿐입니다.

+0

내가 본 모든 시각적 프레임 워크가 사용하는 해킹입니다. –