Xcode 4.5를 사용하고 iOS 5 이상을 타겟팅합니다.
사용자가 기본보기의 배경을 변경할 수있는 popover가 있습니다.popover에서보기 새로 고침
"버튼"을 탭하면 변경 사항을 보려면 두 번 살짝 눌러야합니다.
NSNotification
을 사용하고 있습니다. 나는 위임을 시도했지만 아직 아무것도하지 않는다.
도움이나 조언을 주시면 감사하겠습니다.
:
// nav button is for background image selection
navigationBtn.tag = buttonTag;
[navigationBtn setBackgroundImage:[UIImage imageNamed:tempImage] forState:UIControlStateNormal];
if (selectFlag) {
[navigationBtn addTarget:self action:@selector(BGSelected:) forControlEvents:UIControlEventTouchUpInside];
} else {
navigationBtn.adjustsImageWhenHighlighted = NO;
}
및 선택 방법 :
- (void)BGSelected:(id)sender {
self.bgtag = [sender tag];
SettingsDAO *settingsDao = [[SettingsDAO alloc] init];
if ([self.currentView isEqualToString:@"New_Journal"])
{
NSLog(@"Update Journals Background");
[settingsDao updateJournalBackgroundId:self.journalId withBackgroundId:self.bgtag];
}
// notification to let EntryView know the background has changed
[[NSNotificationCenter defaultCenter] postNotificationName:@"aBackgroundChanged"
object:self];
[settingsDao release];
}
NSNotification 방법은 : 당신은 스토리 보드를 사용하고있는 경우
- (void)aBackgroundChanged:(NSNotification *)notification {
[self invalidate];
[self reloadSettings];
}
알림 위임 주제를 다루는 적절한 방법입니다. popover 호출자가 해당 알림을 수신하는지 확인해야합니다. aBackgroundChange를 NSString 상수로 만들 것을 제안합니다. 또는 popover 컨트롤러의 대리자가 nil이 아닌지 확인하십시오. – Leonardo
알림을 NSString 상수로 만들려면 어떻게해야합니까? 왜 필요합니까? 호출자가 듣고 있습니다 ... ViewDidLoad에 옵저버가 있습니다. popover가 호출되기 전에 뷰가로드 될 때 다른 어딘가에 있어야합니까? –
다음과 같이 상수를 만듭니다. NSString * const BackgroundChange = @ "aBackgroundChange"; 잘못 입력하는 것을 피할 것이고 가장 중요한 Xcode는 자동 완성 될 수 있습니다. popover를 만든 직후 청취자를 설정하거나 호출자를 위임자로 지정하십시오. – Leonardo