2015-01-13 7 views
0

나는 을 사용하고 있으며 UINavigationController을 사용하여 A-> B-> A-> B 등으로 이동하는 방법이 있는지 알고 싶습니다. UIViewControllers은 동일하지만 각각에로드 된 정보가 다릅니다.스토리 보드의 UIViewController 반복 루프

segues를 사용해 보았지만 문제는 클래스에로드 된 정보가 저장되지 않는다는 것입니다. 그래서 내가 A-> B-> A를 할 때 루트로 돌아 가면 루트 정보는 2º A에로드 된 정보입니다. storyboards을 사용하고 있기 때문에 나는 UIViewControllers의 인스턴스를 생성하지 않습니다. 그게 문제 야, prepareForSegue에만 [segue destinationViewController]을 사용한다. 나는 하나의 솔루션이 storyboards을 사용하지 않고 Xibs을 사용하지 않을 것이라고 생각한다. 왜냐하면 그 방법은로드 될 때마다 각 클래스의 인스턴스를 생성하고 내 문제를 해결할 것이기 때문이다.

난 그냥 Xibs에 변경 작업을 많이 필요하기 때문에, storyboard를 사용하여이 작업을 수행 할 수있는 방법이 있는지 알고 싶어. 어떤 제안?

+0

'A'의 인스턴스 하나와 'B'인스턴스가 하나만있는 경우 스토리 보드가 새로운 인스턴스를 만들려고 할 때 두 인스턴스를 모두 싱글 톤으로 만들면 원본을 참조로 되돌릴 수 있습니다. –

+0

다음과 같이 명확히 할 수 있습니다. A와 B의 새 인스턴스를 매번 사용 하시겠습니까? 아니면 기존의 두 인스턴스간에 전환 하시겠습니까? – pbasdf

+0

매번 새로운 인스턴스가 있지만 이미 해결 된 것 같습니다. – bruno

답변

0

이전에는 A -> B -> A -> B를 시도한 적이 없었습니다. 그러나 나는 A -> A -> A를하려고 노력했지만 그 방법은 효과가 없습니다. 스토리 보드의 한계는 동일한 VC의 다른 인스턴스와 구별 할 수 없다는 것입니다.

하지만 할 수있는 일은 스토리 보드에 세구 (segue)를 트리거하는 버튼을 작성하는 대신 메소드에 연결하고 새보기 컨트롤러를 수동으로 탐색 스택에 밀어 넣는 것입니다.

- (IBAction)buttonTapped:(id)sender { 
    UIViewController *viewControllerA = [self.storyboard instantiateViewControllerWithIdentifier:@"viewControllerAIdentifier"]; 
    [self.navigationController pushViewController:viewControllerA]; 
} 

"prepareForSegue"는 여기에서 호출되지 않으므로 필요에 따라 새 VC 인스턴스를 구성해야합니다.

+0

인스턴스가 만들어졌지만 돌아올 때 똑같은 일이 발생합니다. – bruno

+0

내 문제는 다른 곳에서 발생했지만 위 질문에 대한 답변이므로이 대답을 승인합니다. – bruno