2014-07-09 3 views
-2

보기 컨트롤러에 'HomeViewController'라고 말하면서 UITabBarController을 추가했는데 그 중 하나는 4 UITabBarItems입니다. 이제 내가 원하는 것은 HomeViewController를 선택할 때 처음에는 어떤 탭도 선택되어서는 안되며 다른 뷰가로드되어야한다는 것입니다. UITabBarController 대신 UITabBar 시도했지만 작동하지 않습니다. 나는 또한 시도했다 :선택되지 않은 탭이있는 UITabBarController

tabBarController.selectedViewController=nil; //giving crash 
tabBarController.selectedIndex=-1; //not working either 

UITabBarItems 사용자가 그들을 클릭 할 때 선택해야한다.

+0

그 충돌은 뭐라구? 문서에 따르면, nil은 selectedRootViewController에 대한 합법적 인 값이어야하지만, 다른 컨트롤에서는 그것이 nil이 아닌 것으로 기대할 수 있습니다. – NRitH

+0

크래시 : - [UITabBarController setSelectedViewController :] 탭 컨트롤러의보기 컨트롤러 목록에있는보기 컨트롤러 만 선택할 수 있습니다. ' – user3797578

+0

다음은 내가 원했던 링크입니다 ... http://nullpointr.wordpress.com/2012/02/18/ios-dev-add-tabbar-to-a-view-without-a-tabbarcontroller/ – user3797578

답변

0

나는 이것이 올바른 방법이 아니라고 생각합니다. TabBar를 만드는 개념은 "관련 탭의 특정 컨트롤러 표시"라고 말합니다. 사용자가 화면에 표시 할 다른 탭보다 '탭'을 선택하지 않으면 "검은 화면이 나타 납니까?" 그러니 귀하의 디자인을 재구성하십시오.

+0

아니요 검은 화면이 아니라. 보기 또는보기 – user3797578

+0

탭을 선택하지 않으면 화면에 표시 할보기 컨트롤러는 무엇입니까? – kulss

+0

무엇이든지보기 컨트롤러입니다. 저는보기 컨트롤러 이름이 중요하지 않다고 생각합니다. 좋아 .. 빈 화면을 보여 주겠다고 어떻게 할거야 .. – user3797578

0

HomeViewController에 UITabBar 개체를 추가해야합니다. 있는 viewDidLoad에서

당신은 다음 코드를 추가 할 필요가 :

ViewController1 *controller1 = [[ViewController1 alloc] initWithNibName:@"ViewController1" bundle:nil]; 
ViewController2 *controller2 = [[ViewController2 alloc] initWithNibName:@"ViewController2" bundle:nil]; 
viewControllersArray = [[NSArray alloc] initWithObjects:controller1,controller2, nil]; 

tabBarController = [[UITabBarController alloc] init]; 
tabBarController.viewControllers = [[NSArray alloc] initWithArray:viewControllersArray]; 
for(int i = 0; i < tabBarController.tabBar.items.count; i++){ 
    [[tabBarController.tabBar.items objectAtIndex:i] setTitle:[[tabBar.items objectAtIndex:i] title]]; 
} 

isItemSelected = NO; 

는 또한 그래서 두 번째 항목에 대한 첫 번째 항목, 1 0으로 0부터 시작하는 탭 표시 줄 항목의 태그를 설정합니다.

및 구현 위임 방법 :

  • (무효) 한 tabBar : (의 UITabBar *) tabBar1 didSelectItem : (UITabBarItem *) 항목 무엇 {

    if(!isItemSelected){ 
        isItemSelected = YES; 
        AppDelegate *appDel = (AppDelegate *)[UIApplication sharedApplication].delegate; 
        appDel.window.rootViewController = tabBarController; 
    } 
    
    
    tabBarController.selectedIndex = item.tag; 
    tabBarController.selectedViewController = [viewControllersArray objectAtIndex:item.tag]; 
    

}

+0

탭을 선택할 때보기 컨트롤러를 어떻게 열어야합니까? didSelectItem 대리인을 사용하여 할 수있는 것을 알았습니다. 그러나 모르겠습니다. 그렇게하는 방법. 우리가 UITabBarController를 사용하는 것처럼 tabBarController.viewControllers = [NSArray arrayWithObjects : settingsNav, searchNav, favorNav, newsfeedNav, messagingNav, nil]; 보기 컨트롤러를 설정하는 데 사용됩니다 – user3797578

+0

내 편집 된 답변을 확인하십시오. – Ritu

관련 문제