TabBarController가로드 될 때 포함 된 모든 초기 ViewController가 초기화됩니다. 그러나 해당 보기은 해당 탭 항목을 탐색 할 때까지로드되지 않습니다. 따라서 어떤 뷰로드 방식 (viewDidLoad
등)에서도 코드를 실행할 수 없습니다. 그러나 초기화 메소드 중 하나를 대체하여 코드를 실행할 수 있습니다. 스토리 께의 ViewController 아카이브 해제의 공정을 사용하면 NIB는로드 된이 방법 트리거 경우
는 : 스토리 보드를 사용하지 않는 경우
- (void) awakeFromNib
{
}
을이 initialiser 전에 NIB 로딩하기 위해 호출된다 :
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
}
return self;
}
어떤 경우 든 이러한 메서드를 재정 의하여 일부 코드를 실행할 수 있습니다.
- (void) awakeFromNib
[super awakeFromNib];
[self.navigationController.tabBarItem
setBadgeValue:[NSString stringWithFormat:@"badgeValue"]]];
}
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
[self.navigationController.tabBarItem
setBadgeValue:[NSString stringWithFormat:@"badgeValue"]]];
}
return self;
}
그러나 데이터를 가져 오는 위치는주의해야합니다. 이 시점에서 self.photos
은 예를 들어 초기화되지 않을 수 있습니다. 이 데이터가 userdefaults에서 나오면 여기에있는 데이터를 읽고 그에 따라 배지를 설정할 수 있어야합니다.
두 번째 _View_ 컨트롤러에서 데이터를 가져 오는 위치는 어디입니까? 'self.photos'는 무엇입니까? 첫 번째보기 컨트롤러에서 동일한 데이터를 얻을 수있는 방법이 있습니까? – foundry
2 개의 뷰 컨트롤러는 실제로 서로의 데이터를 보지 않아야합니다. 그것들은 서로 다른, 자체 포함 된 응용 프로그램입니다. self.photos 정보는 궁극적으로 사용자의 기본 목록에서 나옵니다. 그러나 제 1의보기 컨트롤러가 실제로 아무것도 알지 못하는 데이터를 가져 오는 것이 "좋지 않을"것이라고 생각하는 것 같습니다. – kejoki
엄격히 관련이 없지만 ... 스토리 보드, xib 또는 코드 만 사용하고 있습니까? – foundry