2016-10-08 3 views
1

내가 이해 한 바로는 MainMenu.xib에는 응용 프로그램의 기본 메뉴를 만드는 데 사용되는 XML이 포함되어 있습니다. 내 질문은,이 파일을로드하고, 읽고, 메인 메뉴를 만드는 데 어떻게 사용합니까? UI에서 보이는 실제 주 메뉴로 MainMenu.xib를 번역하는 코드의 내부 동작을 이해하는 데 도움을 줄 수 있습니까?.xib 파일을 UI 요소로 어떻게 변환합니까?

여기까지 지금까지의 과정을 이해했습니다.

  1. MainMenu.xib는 .nib는 UINib 오브젝트에 로딩되는 .nib
  2. 로 컴파일된다.
  3. 여기에서 UINib 개체가 어떻게 든 주 메뉴를 만드는 데 사용됩니다.

이것은 내가 혼란스러워하는 부분입니다. 주 메뉴를 만드는 데 UINib 객체가 얼마나 정확하게 사용됩니까?

+0

이 질문은 너무 광범위하여 StackOverflow에 묻는 것입니다 –

+0

@BarryMichaelDoyle 좋아, 머리를 주셔서 감사합니다! StackOverflow 지침에 맞도록 좀 더 구체적으로 만들 수있는 방법에 대한 제안? –

답변

2

다른 점은 상상해보십시오. 실행중인 응용 프로그램의 메모리에 라이브 뷰 계층 구조가 있습니다. 이제 UI의 상태를 저장하는 동안 프로그램을 종료 할 수 있습니다. 어떻게 그럴 수 있니? 어떻게하면 라이브 뷰의 모든 중요한 속성을 디스크에 기록 할 수 있습니다. 어떤 종류의 직렬화 및 보관 프로세스.

그게 전부입니다. 그것은보기가 될 수있는 여러 개체의 아카이브입니다. (사용자 상호 작용이 일어나기 전에 뷰의 "기본"상태를 인코딩합니다.) xib는 올바르게 표시했듯이 해당 아카이브를 XML로 렌더링하므로 버전 제어와 더 잘 협력합니다. 다양한 뷰에 속성과 값들이의

<tableViewCell contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" rowHeight="161" id="KGk-i7-Jjw" customClass="LeakInfoStepsCell" customModule="LookoutEmailLeakAlert" customModuleProvider="target"> 
     <rect key="frame" x="0.0" y="0.0" width="320" height="170"/> 
     <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> 
... 

그냥 목록 : 당신은 엑스 코드에서 XIB의 XML을 살펴 경우

, 당신은이 같은 항목으로 구성되어 있음을 볼 수 있습니다 펜촉이 보관되지 않은 상태 여야합니다. 따라서 UINib을로드 할 때 코드에서 수동으로 수행하는 것처럼 해당 속성을 읽고 뷰 객체를 만드는 것이거나 NSCoding을 통해 자신의 객체에 대해 수행하는 것과 같습니다.

+0

고마워요! 이것은 실제로 많은 도움이됩니다. 나는 UINib 클래스 뒤에 어떤 종류의 "마법"이 있다는 생각이 들었지 만 실제로 그렇지는 않다. 이것은 꽤 도움이됩니다. - 많이 감사합니다 :) –

+0

나는 이것이 UINib 코드를 실제로 본 것이 아니라 추론에 기반을두고 있음을 인정하지만 실제로 관련된 모든 마법이 있다고 생각하지 않습니다. 다행히 도울 수있어. –

+0

그 추론은 나에게 많은 의미가 있습니다! 또한, 한 가지 더 질문 - 내가 MainMenu.xib에서 읽고 수동으로 메인 메뉴를 만들고 싶다. (즉, .xib에 내 자신의 "파일", "보기"등의 옵션을 정의하고, .xib를 파싱하고, 이 .xib에서 주 메뉴를 만듭니다). 이제 MainMenu.xib에서 데이터를 읽고 구문 분석하는 방법을 이해하지만 거기에서 기본 메뉴를 만드는 방법에 대한 힌트가 있습니까? –