prepareForSegue 메서드에서 호출 한 소스보기 컨트롤러의 플래그 (NSNumber 속성)를 설정하려고하는 모달보기 컨트롤러가 있습니다. "선택자 'setGoToEditNewNote :'"에 대해 알려진 인스턴스 메소드가 없습니다. "오류로 인해 빌드에 실패합니다.prepareForSegue에서 대상보기 컨트롤러의 NSNumber 속성을 설정하는 중 오류가 발생했습니다.
원본 뷰 컨트롤러 .H :
@property (strong, nonatomic) NSNumber *goToEditNewNote;
원본 뷰 컨트롤러하는 .m :
@synthesize goToEditNewNote;
...
- (void)viewDidLoad
{
[super viewDidLoad];
// clear the flag
goToEditNewNote = [[NSNumber alloc] initWithBool:FALSE];
...
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
if ([goToEditNewNote boolValue] == TRUE) {
goToEditNewNote = FALSE;
[self performSegueWithIdentifier: @"editNote" sender: self];
...
모달보기 컨트롤러 .H :
모달보기 컨트롤러하는 .m 여기에 코드입니다 :
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([[segue identifier] isEqualToString:@"done"])
{
[self done];
[[segue destinationViewController] setGoToEditNewNote:TRUE]; <<< get error here
}
}
모달 뷰가로드 될 때 goToEditNewNote가 유지되지 않는 문제가있을 수 있다고 생각하지만 이유를 이해하지 못합니다. managedObjectContext와 같은 다른 속성을 성공과 비슷한 방식으로 설정했습니다. ARC의 초심자 인 귀하의 답변에 가능한 구체적으로 기재하십시오. 고마워요 - Tom
또한 BOOL Value를 NSNumber 속성으로 설정하면 Runtime 오류가 아니라 컴파일러 경고가 표시되어야합니다. 그러나이 경우는 Mark –
에 설명 된 것과 동일합니다. 맞습니다. BOOL을 NSNumber에 전달하면 세그멘테이션 오류가 발생합니다. 내 코드를 업데이트했습니다. OP, 처음에는 'BOOL'을 사용하지 않는 이유가 무엇입니까? –
@M 및 @D. 내가 제안한대로했는데 오류가 사라졌지만, 세트가 소스 뷰 컨트롤러로 돌아 가지 않았습니다. segue에서 설정 한 값을 기록하고 예상대로 goToEditNewNote = 1을보고했습니다. 그런 다음 소스 뷰 컨트롤러의 viewWillAppear 메서드에 값을 기록했습니다. 그것은 goToEditNewNote = 0을보고했습니다. Mark, 원래는 BOOL을 사용했지만 문제에 대해 더 많은 것을 이해하거나 해결하기 위해 NSNumber로 변경했습니다. 이 링크가 관련성이 있습니까? http://www.ifans.com/forums/showthread.php?t=183427. 세터를 추가해도 문제가 해결되지 않았습니다. –