2012-03-21 4 views
1

거대한 스토리 보드 (SVN 병합 악몽)를 무너 뜨리는 데 도움이되는 중첩 된 스토리 보드 구조를 만들려고합니다. 어쨌든이 항목에 부모 스토리 보드/뷰 컨트롤러가 있습니다. case 'NestedStoryTestViewContoller'및 기타 두 개의 스토리 보드/ViewController (각각 StoryOne 및 StoryTwo)IOS : presentViewController에서 presentViewController의 속성 및 메서드에 액세스 할 수 없습니다.

NestedStoryTestViewContoller에서 버튼을 클릭하면 StoryOne이 모달 뷰로 시작됩니다. 그런 다음이를 무시하고 NestedStoryTestViewController로 돌아갈 수 있습니다. 그러나 StoryOne에서 StoryTwo로 직접 이동하려면 문제가 발생합니다. 제가하고 싶은 것은 다음과 같습니다 :

-(IBAction)goToStoryTwo{ 

    UIStoryboard *storyTwo = [UIStoryboard storyboardWithName:@"BoardTwo" bundle:nil]; 
    UIViewController *boardTwoVC = [storyTwo instantiateInitialViewController]; 
    boardTwoVC.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal; 
    [self.presentingViewController presentModalViewController:boardTwoVC animated:YES]; 

} 

그러나 이것은 아무것도 아닙니다.

내가 좋아하는 뭔가 모달 뷰를 취소 할 수 있습니다

-(IBAction)goToMain{ 

    [self dismissModalViewControllerAnimated:YES]; 
} 

와 나는 modalview 기각 후 NestedStoryTestViewController의의 viewDidLoad 방법에서 새로운 ModalView를 호출 할 수 있지만,이 일을 위해 나는 방법의 어떤 종류를 호출해야합니다 NestedStoryTestViewCOntroller에로드 할 새 모달 뷰를 알려주는 속성을 설정합니다.

내가 아무 이유없이 것 같아 무엇에 대한 좋은 큰 지방 컴파일러 오류 얻을 이러한 메서드를 호출하려고 : 자동 참조 카운팅 문제 '리시버 타입'의 UIViewController '예를 들면 :

[self.presentingViewController setViewToLoad:@"StoryOne"]; 

오류를 트리거 메시지가 선택기 'setViewToLoad'로 메서드를 선언하지 않습니다.

이 메서드는 명확하게 정의되어 구현되었으며이 오류가 throw되는 이유를 알 수 없습니다. 'presentingViewController'속성을 설정하려고 할 때도 같은 오류가 발생합니다. 내가 좋아 로그 문에 넣어 경우

NSLog(@"parent class : %@",[[self presentingViewController] class]); 

는 '부모 클래스 : NestedStoryTestViewController'을 기록 예상대로.

이 도움말은 업무용이므로 매우 중요하고시기 적절합니다. 필요한 경우 프로젝트 파일을 제공 할 수 있습니다.

감사합니다, 크리스

참고 : 나는 'presentingViewController'에서 'parentViewController'에서 이름 변경의 알고 프로젝트가 5.0 만 그래서 이것은 문제가되지 않습니다.

+0

당신의 두 번째 문제는'[(NestedStoryTestViewController *) self.presentingViewController setViewToLoad : @ "StoryOne"];'을 사용하여 고칠 수 있습니다. 첫 번째 문제에 대해서는 확실하지 않습니다. – lnafziger

+0

이것은 서로 관련이없는 문제이므로 별도의 질문으로 게시하는 것이 가장 좋습니다. – lnafziger

+0

SWEEEET! 넌 멋진 인파저! 다른 문제는 정말로 내가 왜 이런 식으로 움직여야하는지에 대한 배경 일뿐입니다. 저는 이전 modalview가 움직일 때까지 다른 모달보기를 만들 수 없기 때문에 작동하지 않는다고 확신합니다. 그러나 귀하의 충고에 따라 계속해서 멀티 스토리 보드 솔루션을 구현할 수 있습니다. – wwwWRX

답변

0

당신이 다음 줄에 오류가 발생하는 이유 : 당신이 당신의 NestedStoryTestViewController 클래스의 메소드를 호출되지만 컴파일러가이 UIViewController 클래스라고 생각하기 때문에

[self.presentingViewController setViewToLoad:@"StoryOne"]; 

입니다. 이 클래스가 무엇인지 알고 있기 때문에 컴파일러가 알 수 있도록

, 당신은 다음과 같이 당신의 방법에 반응 할 것이 적절한 형식으로 "변환"(또는 캐스트)해야합니다

[(NestedStoryTestViewController *)self.presentingViewController setViewToLoad:@"StoryOne"]; 
+0

이 답변에이어서 저는 [(ItViewController *) self.presentingViewController setSelectedBook : [_ BookItems objectAtIndex : [indexPath row]]]; '을했습니다. xcode의 intellisense에서 "setSelectedBook"을 얻습니다.하지만 런타임 중에 오류가 발생하는 이유는 무엇입니까? "[UINavigationController setSelectedBook :] : 인식 할 수없는 선택기가 인스턴스 0x6b4ad10으로 전송되었습니다." " –

+0

그래서 내가 Rohit, 해결책을 찾았습니까? – Nick

관련 문제