2016-12-14 1 views
0

다른 응용 프로그램에서 만든 코드를 사용하고 있습니다. 다른 응용 프로그램에서는 코드가 정상적으로 작동합니다. 내가 할 일은 splashViewController를로드하는 동안 slideShow의 이미지를 다운로드하고 캐시하는 것입니다. 다운로드가 끝나면 maintableviewcontroller 인 mainviewcontroller를 표시합니다.NSRangeException indexOutOfBound

UIImage* tabBarBackground = [UIImage imageNamed:@"tabBar.png"]; 
[[UITabBar appearance] setBackgroundImage:tabBarBackground]; 
UITabBarController *rootViewController = [storyboard instantiateViewControllerWithIdentifier:@"barController"]; 
UITabBar *tabBar = rootViewController.tabBar; 
UITabBarItem *tabBarItem1 = tabBar.items[0];// the error here happening event if i comment out this line the error is hapen at the next uibar items 
UIImage *selectedLogo = [[UIImage imageNamed:@"productSelected"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]; 
UIImage *unselectedLogo = [[UIImage imageNamed:@"product"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]; 
[tabBarItem1 setImage:unselectedLogo]; 
[tabBarItem1 setSelectedImage:selectedLogo]; 
[tabBarItem1 setTitle:@"My Product"]; 
UITabBarItem *tabBarItem2 = tabBar.items[1]; 
UIImage *selectednews = [[UIImage imageNamed:@"notificationSelected"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]; 
UIImage *unselectednews = [[UIImage imageNamed:@"notification"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]; 
[tabBarItem2 setImage:unselectednews]; 
[tabBarItem2 setSelectedImage:selectednews]; 
[tabBarItem2 setTitle:@"Notifications"]; 
UITabBarItem *tabBarItem3 = [tabBar.items objectAtIndex:2]; 
UIImage *selectedLocation = [[UIImage imageNamed:@"locationSelected"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]; 
UIImage *unselectedLocation = [[UIImage imageNamed:@"location"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]; 
[tabBarItem3 setImage:unselectedLocation]; 
[tabBarItem3 setSelectedImage:selectedLocation]; 
[tabBarItem3 setTitle:@"Locate Us"]; 
UITabBarItem *tabBarItem4 = tabBar.items[3]; 
UIImage *selectedaboutus = [[UIImage imageNamed:@"moreSelected"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]; 
UIImage *unselectedaboutus = [[UIImage imageNamed:@"more"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]; 
[tabBarItem4 setImage:unselectedaboutus]; 
[tabBarItem4 setSelectedImage:selectedaboutus]; 
[tabBarItem4 setTitle:@"More"]; 
[self.loadingActivityIndicator stopAnimating]; 
[self.navigationController popToRootViewControllerAnimated:YES]; 
[self presentViewController:rootViewController animated:YES completion:nil]; 
+0

시도 디버그와 귀하의 tabbar.items을 확인 : 여기

당신이 바인딩을 생성하고 올바르게 segues 있는지 확인/당신에게 디버깅을 도울 수있는 스토리 보드를 사용하여 제대로 TabBar의를 만드는 자세한 단계와 좋은 게시물입니다 그것이 부서지는 지점. 이 오류가 발생하면 비어 있어야합니다. – iBug

+0

흠, 두 번째 앱에서 작동하는 방식과 작동하지 않는 새 앱에서 혼란스러워집니다. –

답변

0

첫 tabbar.items에 대한 카운트 체크를 넣어 모든 탭 표시 줄 항목에 액세스하십시오 : 또한

if(tabbar.items.count==tabCount) //tabCount is number of tabs in your tabbar 
{ 
    UITabBarItem *tabBarItem1 = tabBar.items[0]; 
    //<remaining code> 
}else 
{ 
    //either tabbar is nil or tabbar doesn't not have any tabs, so handle accordingly 
} 

을 TabBar의가에서 잘 작동되기 때문에, 여기에 내가 사용하고있는 코드는 또 다른 응용 프로그램 인 경우, StoryBoard가 rootViewController 용 tabbar를 올바르게 만들고 바인딩하면 StoryBoard를 확인하십시오. https://guides.codepath.com/ios/Using-Tab-Bar-Controllers

관련 문제