2012-04-18 2 views
20

UIViewController에서 상속받은 기본보기 컨트롤러 클래스와 기본 viewcontroller 클래스의 상속 된 클래스가 있습니다. 이제 파일 소유자가 상속 된 클래스 인 펜촉이 있지만 내 모든 액션과 아웃렛이 기본 클래스에 있습니다. nib 파일의 action \ outlet을 기본 클래스의 action \ outlet에 연결할 수도 있습니까? 이러한 목표를 달성하기 위해기본 클래스의 IBOutlet 또는 IBAction에 연결하는 방법

+0

예. Xcode의 모든 프로젝트가 같은 프로젝트에 있습니까? – wbyoung

답변

29

내가 할 기본적으로 example하여 설명 할 것이다 :

// BaseViewController.h 
@interface BaseViewController : UIViewController  
@property (weak, nonatomic) IBOutlet UITableView *tableView;  
@end 

하는 두 아이를 정의

기본 클래스를 정의 .H 파일에 UITableView 함께 IBOutlet 및 할당 (의이 BaseViewController를 호출하자) 클래스 (즉, FirstChildViewControllerSecondChildViewController) :

이제
// FirstChildViewController.h 
@interface FirstChildViewController : BaseViewController 
@end 

// SecondChildViewController.h 
@interface SecondChildViewController : BaseViewController 
@end 

중 하나를 만들 (또는 모두) 할 수있는 childre n 클래스는 기본 클래스의 iboutlet을 사용합니다. 참조하는 콘센트를 기본 클래스 .h 파일의 속성 정의로 드래그하면됩니다.

enter image description here

here이를 설명하는 완전한 프로젝트입니다.

+3

흠 .. 이것은 신속하게 작동하지 않는 것 같습니다 –

7

두 가지 방법 :

1)

프로그래밍을 할 (즉, 먼저 기본 클래스에 콘센트를 선언

) 코드.

다음 상속 된 클래스의 코드를 통해 콘센트를 할당하십시오.

2

)

당신은 또한 당신의 XIB 파일에 아웃렛과 액션을 할당 할 수 있습니다. Xcode는 상속받은 아웃렛과 기본 클래스의 액션에 대해 알고 있습니다.

4

기본 클래스가 Swift 프레임 워크에있는 경우 기본 클래스와 해당 콘센트가 공용 인 경우에도 Xcode 7에서 콘센트를 볼 수없는 경우가 있습니다. 다음이 경우에 해결 될 때 : IB에서

  1. 파생 클래스

를 사용 IB에서

  • 컨트롤 세트 콘센트를 연결베이스 클래스
  • 을 사용하도록 제어를 설정 IB는 "!" 아웃렛 옆에 놓치지 만 런타임에는 오류가 없습니다.

    누군가가 더 좋은 해결 방법을 가지고 있다면 알려주십시오!

  • +0

    이 물건을 어떻게 좀 더 자세하게 설명 할 수 있습니까? – c0d3Junk13

    +0

    @ c0d3Junk13 : 스토리 보드를 엽니 다. ID 관리자 표시. 컨트롤을 선택하십시오. 클래스를 기본 클래스로 설정합니다. 콘센트를 연결하십시오.동일한 컨트롤을 선택하고 클래스를 파생 클래스로 설정합니다. 경고를 무시하십시오. – phatmann

    +0

    흠 .. 이건 hackish처럼 보인다 .. 허락 되니? 또는 나중에 무언가 깨닫게 될 것입니다 –

    관련 문제