2013-05-24 3 views
0

저는 (StoryBoard에서) 어디서든 코드별로 푸시 할 수있는 ViewController를 만들고 싶습니다. (이 ViewController는 많은 시간이 소요되어 wan을하지 않습니다. StoryBoard에 많은 수의 장을 추가 할 필요가 없습니다 ...).ViewController StoryBoard에서 ViewDidLoad를 두 번 호출합니다.

또한 현재 ViewController에서 푸시 된 변수로 일부 변수를 전달해야합니다.

NBItemDetailsViewController *vc = [self.storyboard instantiateViewControllerWithIdentifier:@"ItemDetailsViewController"]; 
vc.item = self.selectedItem; 
[self.navigationController pushViewController:vc animated:YES]; 

그것은 거의 작동하지만, 밀어의 ViewController에서의 viewDidLoad 메서드가 두 번 호출됩니다 은이 코드를 사용하고 그것을합니다. 처음 엔 항목을 가져올 수 있지만 두 번째 항목은 null입니다. 물론 그것은 표시된 ViewController가 두 번째 호출 중 하나 인 것처럼 보이고 항목을 가져올 수 없습니다.

아이디어가 있으십니까? StoryBoard에서 segues를 사용하는 것이 더 좋습니다 (StoryBoard에서 ViewController를 재사용 할 수있는 방법이 없다고 생각합니다 ...)?

추 신 : 이미 viewDidAppear을 사용하려고했습니다.

답변

1

당신은 UIViewController (MyRegularViewController)의 서브 클래스를 생성하고 (MyRegularViewController.xib)에 의해 .xib를 할당

File > New > File > User Interface > Empty

하고 emtpy XIB 파일에 UIViewController를 드래그 할 수도 있습니다. MyRegularViewController를 해당 xib에 연결 한 다음 사용자 정의하십시오.

이제 어디서나 간단하게 사용할 수 있습니다.

MyRegularViewController *regular = [[MyRegularViewController alloc] initWithNibName:@"MyRegularViewController" bundle:nil]; 
self.navigationController pushViewController:regular animated:YES]; 

실제로 모든 상황에서 스토리 보드를 사용해야하는 것은 아니며, 실제로이 상황과 같은 방법으로 스토리 보드를 사용하면 스토리 보드가 엉망이됩니다. 간단히 xib와 custom 클래스를 사용하십시오.

+0

예, 그게 제가 끝내겠습니까. 다른 해결책을 찾지 못하면 귀하의 답변을 수락합니다. 감사합니다 –

+3

@ Tim, 이것은 스토리 보드에 연결되지 않은보기 컨트롤러가있는 것과 다릅니다. viewDidLoad가 두 번 호출되면 잘못된 결과가 발생합니다. NBItemDetailsViewController에 segue가 연결되어 있습니까? – rdelmar

+0

알았어요! ViewController에서 컨테이너보기가 있는데, 제거하면 작동합니다 (그러나 ^^ 필요합니다). –

관련 문제