2014-03-27 4 views
0

스토리 보드를 사용하려고합니다. 탭바 컨트롤러 및 3 viewcontrollers 추가하고 있습니다. 첫 번째보기에는 단추가 있고 해당 단추를 클릭하면 세 번째 탭이 제거되어 두 개의 탭이 나타납니다.스토리 보드의 탭 바를 동적으로 변경하십시오.

나는 마지막 탭을

NSMutableArray *viewControllersCopy = [[self.tabBarController viewControllers] mutableCopy]; 
[viewControllersCopy removeObjectAtIndex:2]; 
NSArray *modifiedViewControllers = [[NSArray alloc] initWithArray:viewControllersCopy]; 
[self.tabBarController setViewControllers:modifiedViewControllers animated:NO]; 

를 제거하는 코드 아래 사용하고 있지만, 허용되지 않습니다 직접 탭 표시 줄 컨트롤러가 관리하는 탭 표시 줄을 수정 오류

를 제공하여 충돌되는

많은 링크를 보았지만 괜찮은 답변을 찾을 수 없습니다.

감사합니다.

이제 내비게이션 컨트롤러에서 작동하도록 코드를 업데이트했습니다. 이전에는 컨트롤러를 보려고했습니다. 내가이 설정되지 않은 탭 표시 줄 이미지를 설정하고 때 그것은 잘 작동

UIStoryboard* sb = [UIStoryboard storyboardWithName:@"Main_iPhone" 
               bundle:nil]; 
UIViewController* vc1 = [sb instantiateViewControllerWithIdentifier:@"ViewController"]; 
UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:vc1]; 
NSMutableArray *viewControllersCopy = [[self.tabBarController viewControllers] mutableCopy]; 
[viewControllersCopy replaceObjectAtIndex:0 withObject:nav]; 
NSArray *modifiedViewControllers = [[NSArray alloc] initWithArray:viewControllersCopy]; 
[self.tabBarController setViewControllers:modifiedViewControllers animated:NO]; 

탭 표시 줄을 변경하는 코드 아래 사용하지만하고있다.

내가

UIStoryboard* sb = [UIStoryboard storyboardWithName:@"Main_iPhone" 
               bundle:nil]; 
UIViewController* vc1 = [sb instantiateViewControllerWithIdentifier:@"ViewController"]; 
NSMutableArray *viewControllersCopy = [[self.tabBarController viewControllers] mutableCopy]; 
[viewControllersCopy replaceObjectAtIndex:0 withObject:vc1]; 
NSArray *modifiedViewControllers = [[NSArray alloc] initWithArray:viewControllersCopy]; 
[self.tabBarController setViewControllers:modifiedViewControllers animated:NO]; 

이 다음 탭 표시 줄의 이미지가 설정되어 있지만 탐색 화면이 표시되어 있지 않을 경우 사용하고있는 경우.

스토리 보드에서 직접 탐색 컨트롤러를 얻는 방법이 있습니까? 아니면 탭 표시 줄 이미지를 표시 할 방법이 있습니까?

https://github.com/mayankpurwar/sample은 내 코드 링크입니다.

[self.tabBarController.tabBar setItems:[NSArray arrayWithObjects:[arr objectAtIndex:0],[arr objectAtIndex:1], nil]]; 

의견이 줄을 코드에서을 : 난 당신이 질문에 게시 코드하지 예상하지만, 직접 파일 FirstViewController.m에 라인 (40)에 UITabBarController가에 TabBar의 수정으로

+0

최신 Xcode를 사용하고 있습니까? 이 코드는 나를 위해 완벽하게 작동합니다. 이 오류는 게시 한 코드에 논리적으로 보이지 않습니다. 일반적으로 UITabBarController의 tabbar를 직접 수정하면 viewcontrollers 배열을 변경하는 대신이 오류가 발생합니다. – frin

+1

최신 xcode를 사용 중입니다. 코드를 업로드 할 수있는 방법이 있습니까? 내가 보여줄 코드를 업로드 할 수 있습니다. –

+1

코드 링크를 보내고 있습니다. https://github.com/mayankpurwar/sample –

답변

1

귀하의 문제는 line # 67은 마지막 탭을 올바르게 제거합니다. 또한 "Item"이라는 이름의 탭이 발견되면 84 번 라인의 코드도 충돌합니다.

다음 번에 충돌 위치를 찾으려면 중단 점 탐색기 (Cmd + 7 또는보기> 탐색기> 중단 점 탐색기 표시)로 이동하여 왼쪽 아래에있는 더하기 아이콘, 예외 중단 점 추가를 클릭하십시오. 새 중단 점이 자동으로 만들어집니다. 이 중단 점을 사용하여 코드를 실행하면 # 40 줄에서 중단됩니다.

+1

맞습니다. 대답 해줘서 고마워. 탭 표시를 검정색으로 바꿀 때 한 가지 더 문제가 있습니다. FirstViewController.m에서 일부 코드를 업데이트했습니다. 확인하고 왜 검은 색으로 표시되는지 말해주십시오. –

관련 문제