2012-05-24 2 views
0

iPhone 앱에서 탐색 바를 사용자 정의하려고했습니다. 내비게이션 막대의 하위 클래스를 사용하고 실제로 필요한 뷰를 조작하기 위해 레이아웃 서브 뷰 메서드를 사용하려고했습니다. 지금은 하위보기 목록을 가져 오는 중이지만 어떤 하위보기가 막 대형 단추인지 또는 제목보기인지를 알지 못합니다. 설명에서 볼 수있는 것은 UINavigationItem과 몇 가지 추가 정보라는 것입니다. 이에 대한 도움이 필요합니다.iPhone 앱에서 UINavigationBar 하위 뷰 유형 감지

감사합니다. 목표는 제목의 크기를 조작하는 경우

+0

시작은 당신의 코드는 파단을 감지하는 데 사용 추가 중 ... – meronix

+0

내 특정보기로 얻을 수있는 배열을 통해 파단을 얻고 반복 자사의 간단한 방법 : for (id view in self.subviews) { if ([view isKindOfClass:[UIBarButtonItem class]]) { } } 하지만 설정하여 제목보기를 확인해야합니다 titlecontroller의 제목은 제목보기가 아닙니다. 감사합니다. –

답변

2
for (id view in self.subviews) { 
    if ([view isKindOfClass:[UIBarButtonItem class]]) { 
     // subview is UIBarButtonItem 
    } 
    // etc... 
} 

, 난 당신이 대신 UINavigationItemtitleView 설정한다고 생각합니다. 이는 UINavigationController에 푸시하는 UIViewController에서 완료해야합니다. 당신이 모든 UIViewController에서이 작업을 수행하지 않으려면

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    // Play around with the frame of the UILabel to 
    // achieve the effect you are going for 
    UILabel *label = [[UILabel alloc] initWithFrame:self.navigationItem.titleView.frame]; 
    label.text = @"Title text"; 
    label.font = [UIFont fontWithName:@"Oblik-Bold" size:18]; 
    label.backgroundColor = [UIColor clearColor]; 
    [label sizeToFit]; 
    self.navigationItem.titleView = label; 
} 

당신은 모든 UIViewController들에서 상속 기능 등을 구현하는 기본 클래스를 만들 수 있습니다.

+1

+1, 나는 같은 대답을하려고했다 :) – Garoal

+0

답장을 보내 주셔서 감사합니다. 그것은 BarButtonItem에 대해 잘 작동하지만 제목과 같은 다른 하위 뷰를 확인하려면 어떻게해야합니까? 외관상으로는, 나가 보았던 것에서, 나는 전문 기술자가 아니다, 당신이 항법 막대기에 제목을 설정할 때, 감지 될 수없는 제목 표를 붙이는 레이블을 아직 발견 할 수 없다. 이를 위해 가능한 해결책은 무엇입니까? –

+0

내비게이션 바 제목에 액세스 할 수있는 위치를 찾을 수 없었습니다. 언급 한 UINavigationItem은 인터페이스 요소가 아니라 탐색 스택에있는 요소입니다. 서브 클래 싱을위한 목적은 무엇입니까? 하위 클래스 화없이 UINavigationBar를 사용자 정의 할 수있는 매우 정교한 가능성이 있습니다. –

관련 문제