UIButtons
인 ServicesViewController
이 있습니다. 사용자는 버튼을 탭할 수 있으며 UIAlertView
및 UIAlertViewStylePlainTextInput
을 통해 '추가 세부 정보'를 입력 할 수 있습니다. 사용자가 "추가 세부 정보"를 추가하지 않기로 선택하면 UIButton
상태는 selected
으로 유지되고 key
은 에 Yes
으로 저장됩니다. "추가 세부 정보"를 추가하기로 선택한 경우 key
은 여전히 Yes
으로 저장되고 "추가 정보"key
은 string
으로 저장됩니다.managedObjectContext의 단일 속성이 * not * nil인지 확인하십시오.
그런 다음 사용자는 다른 ViewController
으로 이동 한 다음 ServicesViewController
으로 돌아갈 수 있습니다. ServicesViewController
의 viewDidLoad
메소드에서 keys
의 managedObjectContext
에 대한 점검을 수행해야합니다. UIButton
key
이 "예"로 저장되면 UIButton
상태를 강조 표시해야합니다. "추가 세부 정보"key
이 nil
이 아닌 경우 단추는 상태를 disabled
으로 변경해야하며 사용자 피드백을 위해 색을 변경할 수도 있습니다.
코드 버튼을 선택합니다 :
- (IBAction)asbBtnPressed:(UIButton *)sender {
if ([sender isSelected]) {
[sender setSelected:NO];
[_managedObjectNGLS setValue:@"" forKey:@"asb"];
} else {
[sender setSelected:YES];
[_managedObjectNGLS setValue:@"Yes" forKey:@"asb"];
}
UIAlertView *qConfirm = [[UIAlertView alloc]initWithTitle:@"Additional Information"
message:@"Would you like to give additional information?"
delegate:self
cancelButtonTitle:@"Cancel"
otherButtonTitles:@"Proceed", nil];
qConfirm.alertViewStyle = UIAlertViewStylePlainTextInput;
qConfirm.tag = 2;
if (sender.isSelected == YES) {
[qConfirm show];
}
}
사용자가 버튼 색 변경을 사용하지 않도록 설정, "추가 정보"를 입력하면
:- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex {
// ASB
if (alertView.tag == 2) {
if (buttonIndex == 1) {
NSString *asbDetails = [alertView textFieldAtIndex:0].text;
[_managedObjectNGLS setValue:asbDetails forKeyPath:@"asbDetails"];
if (asbDetails.length > 1) {
[_asbBtn setSelected:NO];
_asbBtn.backgroundColor = [UIColor colorWithRed:(55/255.0) green:(200/255.0) blue:(0/255.0) alpha:1];
_asbBtn.enabled = FALSE;
}
}
}
코드 nil
값을 확인하려고 :
// If UIButton has been selected
if ([[_managedObjectNGLS valueForKey:@"asb"] isEqual: @"Yes"]) {
_asbBtn.selected = YES;
// If "Further Details" is empty
} else if ([_managedObjectNGLS valueForKey:@"asbDetails"] == nil) {
// Do nothing
} else {
// Else "Further Details" must be populated, so change colour & disable button
_asbBtn.backgroundColor = [UIColor colorWithRed:(55/255.0) green:(200/255.0) blue:(0/255.0) alpha:1];
_asbBtn.enabled = FALSE;
NSLog(@"asbDetails not empty");
}
저는 이것이 최선의 방법이 아니라는 것을 알고 있습니다 (주로 작동하지 않기 때문에 주로!), 이상적으로 key
가 !=
테스트를 수행하여 nil
이 아닌지 확인하고 싶습니다.하지만이 방법은 작동하지 않습니다. 내가 많은 버튼과 테스트 할 많은 키를 가지고 있기 때문에 fetchRequest
의 길을 가고 싶지 않았다. 그리고 각 버튼은 분리되어 있어야한다. 그래서 나는 모든 버튼을 바꾸는 것처럼 for loop
을 사용할 수 있다고 생각하지 않는다? 틀 렸으면 고쳐줘. 미리 감사드립니다!
당신은 이것에 흥미가 있을지 모른다 : http://stackoverflow.com/questions/25893279/check-for-multiple-nil-values-in-core-data-managedobject – Larme
그것은 실제로 내가 게시 한 또 다른 질문이다. 여러 개의 'nil'값을 검사하고 있었으므로 이제는 하나의 NOT'nil' 값을 확인해야합니다 (오보 된 것처럼 제목을 업데이트했습니다). 도움이 되듯이'Key-Value coding '을 다시 한 번 살펴볼 것입니다. 그러나 누군가이 코드를 기반으로 좋은 해결책을 알고 있는지를 알기 위해이 질문을 떠날 것입니다. 그래도 고마워! – rosshump