0

내 IOS 응용 프로그램에서 탭 항목 수는 고정되지 않습니다. 실행 시간이 결정됩니다. 내가 보여야 할 4 개의 탭이 있다고 가정하면, 동일한 UIViewController 런타임 (네 개의 다른 내비게이션 컨트롤러 내부)의 4 개의 인스턴스를 만들어야합니다.UIViewController의 다중 인스턴스 만들기

id controller1 = [self.storyboard instantiateViewControllerWithIdentifier:@"MyViewController"]; 
[controller1 setTitle:@"Football"]; 
UINavigationController *nav1 = [[UINavigationController alloc] initWithRootViewController:controller1]; 
[arrControllers insertObject:nav1 atIndex:0]; 

내가하고 싶은 것은 동일한 뷰 컨트롤러의 인스턴스를 가진 탐색 컨트롤러의 4 인스턴스를하는 것입니다 : 여기

우리가 특정 뷰 컨트롤러에 액세스하기 위해 할 것입니다. 모든 4 개의보기 컨트롤러는 동일한 기능을 수행합니다 (하나는 풋볼 비디오를 표시하고 하나는 농구 비디오를 표시합니다). 스토리 보드에서 MyViewController은 하나의보기 컨트롤러이지만 다른 인스턴스를 만들어야합니다. MyViewController

어떻게 할 수 있습니까? 내가 그렇게해야만하는 유일한 이유는 탭바의 탭이 고정되지 않는다는 것입니다. 탭바의 탭은 동적 일 것입니다.

것도 도움이 공유하십시오 ..

+1

당신이 MyViewController의 다른 인스턴스를 필요로하므로 instantiateViewControllerWithIdentifier 네 번 호출 ... 예를 들어, 서버에서 데이터에 대한 응답으로 고유의 뿌리를 가진 독특한 탐색 VCS를 만드는 것입니다 나는 당신의 질문을 분명히 알지 못했을 것입니다. –

+0

내보기 컨트롤러는 스토리 보드에서 싱글이며 다른 컨트롤러로 탭에 표시됩니다. 서버 응답에 따라 5 일 수 있습니다. – NSPratik

+0

이것이 지원되는 것 같지 않습니다. 'UIViewController'는 네비게이션 컨트롤러 하나를 반환하기위한 navigationController 속성을 가지고 있습니다. –

답변

1

뷰 컨트롤러는 한 번에 하나의 다른 뷰 컨트롤러에 포함 할 수있다. 그 경우가 아니더라도 사용자가 탭을 바꿀 때마다 상태를 변경해야하므로 탭간에 매우 동일한 인스턴스를 원할 것입니다.

더 단순한 설정, 나는 생각

// you've figured out here that you need four tabs, based on 
// a response from the server like... 
NSArray *tabNames = @[ @"one", @"two", @"three" @"four"]; // from the server 
NSArray *tabs = [@[] mutableCopy]; 
for (NSString *tabName in tabNames) { 
    MyViewController *vc = [self.storyboard instantiateViewControllerWithIdentifier:@"MyViewController"]; 
    vc.title = tabName; 
    UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:vc]; 
    [tabs addObject:nav]; 
} 
// here, tabs is an array of view controllers that can 
// be assigned to the tabBar viewControllers property 
+0

감사합니다. @danh, 시도해 봅시다. – NSPratik

+0

저에게 도움이되었습니다. 나는 이것을 할 것이다. 수락 됨 .. – NSPratik