2012-12-21 6 views
17

저는 스토리 보드를 처음 사용합니다. 나는 코드를 사용하여 내 시각을 보았다. 나는 질문이있다. StoryBoard 상속 된 뷰 컨트롤러

내가보기 컨트롤러

@interface FunctionViewController : UIViewController 

을 만들어 그리고

  1. 전체 화면 버튼 (알파 : 0.5) 추가 내 코드를 사용하여이 중간에
  2. 팝업과 같은보기 (전체 화면이 아님)

그런 다음 다른 ViewController를 생성했습니다.

@interface PlayFunctionViewController : FunctionViewController 

및 팝업과 같은보기 나는 스토리 보드를 사용하여 이러한 물건을 다시 할

에 대한 몇 가지 의견을 추가 할 수 있습니다.

인터페이스 빌더와 스토리 보드를 사용하여 어떻게 구축 할 수 있습니까? FunctionViewController의 모든 하위 클래스에서 전체 화면 버튼과 팝업과 같은보기를 레이아웃 할 필요가 없습니까?

+0

당신이 받아들이는 대답의 숫자는 ... –

+0

인터페이스 빌더에서 레이아웃을한다면, 각각의 IBOutlet을 연결해야하기 때문에 모든 개별보기 컨트롤러를 완전히 레이아웃해야합니다.뷰 컨트롤러와 모든 서브 클래스에 나타날 요소를 가지려면'viewDidLoad' 메소드에서 프로그래밍 방식으로 요소를 생성하십시오. – Greg

+0

PartiallyFinite - 정확하지는 않지만 태그를 사용할 수 있습니다. - [self viewWithTag : 100] – Quver

답변

7

스토리 보드의 하위 클래스에서 수퍼 클래스의 레이아웃을 상속 할 수 없습니다. 예를 들어 스토리 보드의보기 컨트롤러에서 요소를 시각적으로 배치 한 다음 코드, 해당보기 컨트롤러의 하위 클래스 및 기타 요소에 연결하는 경우 동일한 클래스의 인스턴스는 개별적으로 배치되어야하며 자동으로 채워지거나 업데이트되지 않습니다.

즉, 스토리 보드에서 모든 개별 인스턴스에 모든 인터페이스 요소 을 직접 레이아웃하고 연결해야하며 스토리 보드에 추가하는 하위 클래스을 연결해야합니다. 이렇게하면 동일한 클래스의 여러 인스턴스를 앱 전체에서 재사용하고 다르게 배치 할 수있는 유연성을 얻을 수 있지만 레이아웃 상속 기능은 제공되지 않습니다.

하위 클래스에서 레이아웃을 상속하려면 수퍼 클래스의 viewDidLoad에서 레이아웃을 프로그래밍 방식으로 적용한 다음 스토리 보드에 디자인하고 레이아웃 한 경우에도 모든 하위 클래스에 해당 인터페이스 요소가 포함됩니다 스토리 보드에는 표시되지 않지만 앱을 만들고 실행할 때 나타납니다).


기본적으로, 당신은 프로그램을 작성하고, 그들이 모든 인스턴스와 서브 클래스의 인스턴스에 존재 작성하더라도와를 디자인합니다, 인터페이스 클래스에서 동일 요소와 모든 서브 클래스를 갖고 싶어 스토리 보드에서 인스턴스 자체를

코드와 스토리 보드를 혼합 할 수 있으므로 스토리 보드에 일부 요소를 만들 수 있지만 코드 및 모든 인스턴스 및 하위 클래스에 있어야하는 요소를 만들 수 있습니다.

+0

어떤 방법으로 닙을 사용하여이 작업을 수행 할 수 있습니까? 모든 제약 조건을 가진 autolayout을 사용하여 뷰를 설정했습니다. 모든 서브 클래스에서 이것을 상속받는 것이 좋습니다. – guptron

+0

@ sguptaet 불행히도. 이 문제를 여러 번 해결하고보기 컨트롤러를 복사하고 붙여 넣거나 추가 코드를 코드에 추가하는 작업이 끝났습니다. – Greg

+0

nib 파일에서 View Controller를 초기화하면 autolayout 제약 조건을 포함하여 상속 될 수 있다고 동의하지 않습니다. iOS 7과 8에서 프로토 타입을 만들었습니다. – Wingzero

0

비슷한 문제가 발생했지만 많은 시간이 소요되었지만 대리인을 만들고 여러보기 컨트롤러에서 다시 사용하는 것이 훨씬 더 나은 솔루션이었습니다. 그것이 '상속'의 모든 부분을 능가하지만.