iOS의 UIViewController를 서브 클래 싱하는 것에 혼란스러워졌습니다. UICollectionViewDataSource 프로토콜 (구현 파일 내부의 개인 인터페이스)을 준수하는 부모 viewcontroller가 있습니다.iOS의 UIViewController 서브 클래 싱
/* Parent.m */
@interface Parent() <UICollectionViewDataSource>
// this CollectionView is connected to storyboard
@property (weak, nonatomic) IBOutlet UICollectionView *CollectionView;
@end
@implementation Parent
- (NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView
{
return 1;
}
- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section
{
return self.somecount;
}
@end
그리고 부모로부터 상속 한 하위보기 컨트롤러를 만듭니다. 자식은 부모의 개인 인터페이스에 구현 된 데이터 소스로 UICollectionViewDataSource에 대해 아무것도 모릅니다.
/* child.h */
@interface child : parent
// nothing was mentioned here that parent has a method to set the count using 'somecount'
@end
그런 다음 mainstoryboard에서 viewcontroller를 하위보기 컨트롤러로 설정합니다.
어떻게하면 부모 속성 'somecount'에서 값을 가져오고 자식 값을 설정합니까?
감사합니다.
감사합니다. Rob, 응용 프로그램을 디버그하려고했습니다. 첫 번째 줄은 부모가됩니다 : @property (weak, nonatomic) IBOutlet UICollectionView * CollectionView; 부모님의 private 속성에 값을 설정할 수있는 이유는 스토리 보드가 collectionView가 부모 클래스의 콘센트라는 것을 알고 있기 때문입니다. 어쨌든 스토리 보드에서 코드를 디버그하여 출발점과 단계의 세부 흐름을 파악할 수 있습니다. 감사합니다. – Justin
내가 내 질문을 명확하게 보자 : 1. 어떻게 응용 프로그램의 시작 부분에서, 어떤 방법으로 스토리 보드의 맨 처음부터 디버깅하는 코드의 흐름을 찾아 냈지? 즉 초기화 스토리 보드 - 콜렉션 뷰 초기화 - 콜렉션 뷰의 컨트롤러 초기화 - 또는 먼저 부모 초기화? 2. "결론은 자녀가 부모의 모든 행동, 방법 및 속성을 자동으로 상속합니다." 이것은 자식 클래스가 (부모로 선언 된) private 속성을 가질 것이라는 것을 의미합니까? 그러나 아이는 컴파일 시간에 그들을 액세스 할 수 없습니까? 내 자신의 재산에 어떻게 접근 할 수 없습니까? – Justin
여기 링크 : http : //www.stanford.에듀/클래스/cs193p/CGI - bin에/드루팔/시스템/파일/sample_code/예쁜 % 20Matchismo.zip 는 감사 CardGameViewController 및 PlayingCardGameViewController를 보라 – Justin