2012-02-09 2 views
1

MonoTouch를 사용하여 단일보기 ipad 응용 프로그램을 만들었습니다. 응용 프로그램에 대한 더 많은 화면 /보기를 만들고 싶습니다. 그래서 현재의 솔루션에 새로운 ipad 뷰를 추가했습니다. 내가 이것을 할 때 xib는 솔루션에만 추가됩니다 (뷰 컨트롤러에있는 해당 .cs 파일이 없습니다). IB에서 xib을 디자인했지만 이미 기존의보기 컨트롤러에 추가하는 방법에 대한 단서가 없습니다.MonoTouch에서 다른보기/화면/xibs를 사용하는 방법은 무엇입니까?

나는 자신을 분명히했기 때문에 진행 방법을 알려주시겠습니까?

답변

1

간단한 대답은 : 일반적으로

각 XIB에 대한 뷰 컨트롤러를 갖고 싶어합니다. "iPad View Controller"템플릿을 사용하면로드 할 컨트롤러 클래스와 xib 파일을 만듭니다. 그러나 컨트롤러 클래스를 수동으로 매우 쉽게 추가하거나 기존 컨트롤러 클래스를 복사 할 수 있습니다.

기본 컨트롤러 클래스를 로딩하는 작업을 수행하고 XIB를 관리 - 당신은 기본 생성자에 XIB 이름을 전달하여 사용할 그것을 말해 :

public partial class MyViewController : UIViewController 
{ 
    public MyViewController() : base ("MyXibName", null) 
    ... 

고급 대답 :

"nib"는 직렬화 된 UI 객체를 포함하는 파일입니다. "xib"는 단순히 펜촉의 XML 표현입니다. 귀하의 xibs는 응용 프로그램 번들을 구축 할 때 nibs로 컴파일됩니다. 응용 프로그램 번들에서 직접 펜촉을로드 할 수있는 API는 다음 XIB의

NSBundle.MainBundle.LoadNib (xibName, owner); 

이름이 번들 자원 ID입니다 - 파일 이름하지만 확장자없이.

이렇게하면 펜촉이로드되고 모든 객체가 deserialize되며 모든 아웃렛이 owner 객체에 연결됩니다. 이것은 Interface Builder에서 "File 's Owner"객체로 볼 수 있습니다. 유형을 IB로 설정 한 다음 객체를 콘센트 및 작업에 연결할 수 있습니다. 기술적으로 런타임에 사용하는 소유자 객체의 유형은 xib에있는 객체가 연결하는 동일한 이름의 콘센트 및 작업이 있고 해당 객체의 유형이 호환되는 한 실제로 중요하지 않습니다.

런타임에는 nib 및 소유자 객체에 많은 유연성이 있습니다. 예 :

  • 보기 컨트롤러는 기본 생성자에 다른 nib 이름을 전달하여 장치 유형에 따라 다른 nib를로드 할 수 있습니다. 범용 앱 (iPhone + iPad)에 유용합니다.
  • 펜촉이 많은 UIView를 포함하고 소유자의 여러 콘센트에 연결할 수 있거나 많은 컨트롤러를 갖고 싶지 않은 경우 단일 컨트롤러가 여러 개의 닙을 명시 적으로로드하고 소유 할 수 있습니다.
  • 다른 컨트롤러는 동일한 펜촉을로드 할 수 있지만 위젯에 다른 데이터를로드 할 수 있습니다.
  • 콘센트가있는 기본 컨트롤러 클래스와 해당 콘센트에 연결할 수있는 하위 클래스 인 다른 컨트롤러 클래스에 속하는 많은 nib가있을 수 있습니다.
+0

아직 분실 상태입니다. 가능한 경우 버튼을 눌렀을 때 다른 nib을보기 컨트롤러에로드하는 코드를 제공 할 수 있습니다. –

+0

아마도 NavigationViewController가 있고 새로운 ViewController를 그 위에 놓기를 원할 것입니다. 예제는 Master-Detail 템플리트를 참조하십시오. –

+0

두 개의 새로운보기를 여는 두 개의 버튼이있는 기본보기 컨트롤러는 어떻습니까? –

관련 문제