하위보기 컨트롤러와 공유하려는 개체 인스턴스를 참조하는 기본보기 컨트롤러에 Cocoa property을 추가하면됩니다. 예를 들어
, 우리가 NSArray
을 공유하려면, 우리는 메인 뷰 컨트롤러 헤더에있는 그것의 속성을 지정하십시오 @synthesize
지시문을 추가하고 release
-dealloc
의 배열에 기억 구현에
@interface MainViewController : UIViewController {
NSArray *myArray;
}
@property (nonatomic, retain) NSArray *myArray;
@end
:
@implementation MainViewController
@synthesize myArray;
...
- (void) dealloc {
[myArray release];
[super dealloc];
}
@end
은 또한 동일한 방법으로 기본보기 컨트롤러에 종속 컨트롤러를 보려면이 속성을 추가 할 수 있습니다. 해당 헤더에서 동일한 변수 이름 및 특성 설명을 지정하십시오. 당신이 하위 뷰 컨트롤러를 밀어 준비가되면 메인 뷰 컨트롤러에서
, 그냥 밀어 전에 따라 하위 뷰 컨트롤러의 속성을 설정 : 당신의 하위 뷰 컨트롤러에서 마찬가지로
- (void) pushSubordinateViewController {
SubordinateViewController *subVC = [[SubordinateViewController alloc] initWithNibName:@"SubordinateViewController" bundle:nil];
subVC.myArray = self.myArray; // this sets the sub view controller's myArray property
[self.navigationController pushViewController:subVC animated:YES];
[subVC release];
}
, 그 하위 하위 뷰 컨트롤러를 푸시하기 전에 하위 노드의 배열 속성을 적절하게 설정해야합니다.
이러한 방식으로 참조를 설정하면 각 뷰 컨트롤러는 원하는 요소를 포함하는 동일한 배열을 가리키게됩니다.
배열을 사용하려면 self.myArray
을 호출하십시오. [self.myArray objectAtIndex:index]
을 사용하여 지정된 색인에서 객체를 가져옵니다.
보기 컨트롤러간에 데이터를 공유하는 방법이 정리되어 있습니다. 감사합니다. 내가 아직도 불분명 한 것은 (심지어 애플의 문서를 읽은 후에조차도) 프로토콜의 사용이다. 특히 Xcode "유틸리티 응용 프로그램"템플릿을 사용하여 응용 프로그램을 만드는 경우 다음과 같은 내용이 생깁니다. @protocol FlipsideViewControllerDelegate; @interface FlipsideViewController : UIViewController { \t id delegate; } 이 대리자 변수가 설정된 이유를 알 수 없습니다. flipside보기의 표시/해제에 사용 된 것 같습니다. –
Ian
나는 당신이 당신의 게시물에서 언급 한 6 장을 읽지 않았습니다. 그러나 나는 추측을 할 수 있습니다. 대부분의 경우 대리자가 설정되어 FlipsideViewController가 부모 (즉, 부모)를 알릴 수 있습니다.FlipsideViewController에 선행하는 뷰 컨트롤러) – dotnetcoder