2011-07-29 6 views
2

저는 UIViewController가 있으며 아래의 스크린 샷과 같은 간단한 UITabBar를 배치하려고합니다. UITabBarController를 사용하고 싶지 않습니다. 실제로, 나의 원래 설치는 것을 사용하고, 그것을 작동시키기 위하여 케이크로 쉽다.일반 UIViewController (UITabBarController 아님)로 UITabBar 만들기

그러나 UITabBarControllers를 내비게이션 컨트롤러에 넣는 것이 좋지 않으므로 계층 구조를 리팩터링해야합니다 (따라서 하나를 사용하지 말 것을 권유하십시오).

주어진 UIViewController 어떻게 UITabBar 프로그램 적으로 아래쪽으로 추가 할 수 있습니까? 탭 모음 중 하나를 클릭 할 때 특정보기를 표시하려면 내 UITabBarDelegate 모든 설치 가져 왔지만보기 컨트롤러가로드 될 때 문제가 탭 모음을 위로 나타납니다! 내가 여기서 무엇을

- (void) viewDidLoad { 
     ...some initialization... 
    CGRect frame = CGRectMake(0, 431, 320, 49); 


    profileItem = [[UITabBarItem alloc] init]; 
    profileItem.image = icon; 
    profileItem.title = @"Diet";  

    tabBar = [[UITabBar alloc] initWithFrame:frame]; 
    NSArray* items = [[NSArray alloc] initWithObjects:profileItem, nil]; 

    tabBar.items = items; 
    tabBar.delegate = self; 
    [tabBar setSelectedItem:[tabBar.items objectAtIndex:0]]; 

    [self.view addSubview:tabBar]; 
    [super viewDidLoad]; 
} 

을 잃었 : 여기 내 코드는 그렇게 할 수있어?

enter image description here

편집 : 아아, 나는 그것이 내가 정상에 기존의 네비게이션 헤더가있는 경우 내가 무엇을 사용해야 y 좌표 .. 흠 ... 프레임과 관련이있다 발견?

답변

3

편집에서 프레임과 관련이 있다고 이미 결정했다는 것을 언급합니다. 너의 문제는 viewDidLoad 안에 너의 전망의 크기가 결국 표시 될 때 이는 이는 것과다는 것을 보장되지 않는다는 사실에서 유래 할 수있다. UIKit은 viewWillAppear: 직전에 표시되는 컨텍스트에 맞게보기의 크기를 조정합니다. 가 유지되도록

CGRect frame = CGRectMake(0, self.view.bounds.size.height - 49, 
          self.view.bounds.size.width, 49); 

그런 다음 적절한 autoresizingMask을 설정하면 viewDidLoad에 탭 표시 줄을 추가하려면

, 당신은 몇 가지 계산을 수행하여 뷰의 하단 프레임을 배치한다 UIKit이보기의 크기를 조정하더라도 맨 아래 :

tabBar.autoresizingMask = UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleWidth;