2014-02-27 3 views
1

저는 tableviewcontroller가 있습니다. tableviewcontroller의 각 rowclick에 해당 내용 세부 정보의 세부 정보를 표시하려고합니다.스토리 보드가없는 uitabbarviewcontroller ios7의보기 높이 제한

세부 사항은 다음과 같이 고정 컨텐츠를해야합니다 볼 행 :

  1. 헤더
  2. 이미지 제목에 관련된 헤더 아래
  3. 제목 저는 여기의 각 뷰를 표시 할
  4. uitabbarcontroller 탭 버튼

위의 요점 포인트 1-3의 내용은 고정 될 viewcontroller 페이지의 절반을 덮을 것입니다. & viewcontroller의 아래쪽 절반은 4 번째 포인트, 즉 각각의 탭에 대해 생성 된 뷰에 따라 변경 될 각각의 tabbarbuttons의 뷰를 갖습니다.

보기의 위쪽 절반을 고정시키는 해결책을 찾을 수 없습니다. 탭바의 화면을 화면의 아래쪽 절반으로 제한하는 방법.

을 사용하지 않고이 신청서를 으로 보내고 있습니다.

검색 량은 많지만 해결책이 없습니다.

예제 코드 또는 가이드가있는 경우 제공하십시오.

다음은 내가 정확히 안드로이드에서 만든 것처럼 내가 원하는 것의 이미지입니다.

이미지의 내용을 흐리게 처리해야합니다. 다음 위의 이미지에서

enter image description here

내가 해결하려는 것들이다 :

  1. 상단에있는 파란색 막대하는 것은 고정 된 상태로 유지됩니다 헤더입니다.
  2. 헤더 아래의 갈색 막대와 헤더 아래의 희끄무레 한 이미지도 고정됩니다.
  3. 이미지 아래의 4 개의 버튼은 IOS의 화면 하단에 표시되는 탭바 버튼입니다.
  4. 아래의 탭 모음 단추는 첫 번째 탭 모음 단추의 내용을 포함하는보기입니다.

질문 제가 상기 지점의 제 2 고정하고 각 tabbarbuttons 대한 전망을 함유의 ViewController가 4 개 TabBar의 버튼을 사용하여 화면의 나머지 절반보아야 할 것이다.

따라서 탭 단추 중 하나를 클릭하면 화면의 아래쪽 절반이 차지하는보기 만 변경됩니다. & 위쪽 절반은 고정 (고정) 상태로 유지됩니다.

내 설명은 질문에 대한 의구심을 분명히하기를 바랍니다.

내가 내 시나리오를 구현하기위한 코드를 작성했습니다있는 기능을 구현 한 : @ 사이먼 맥 로린 제안 내용에 따라

---- EDITED 솔루션는, 다음은 코드입니다.

-(void)loadShowDetailsTabBarController 
{ 
    ConceptViewController *conceptViewController; 
    CastViewController *castViewController; 
    ShowDetailsFeedbackViewController *showDetailsFeedbackViewController; 
    PromosViewController *promoViewController; 

    UIImage *conceptBtn = [UIImage imageNamed:@"showdetailstabidle_btn_bg.png"]; 
    UIImage *conceptBtnSelected = [UIImage imageNamed:@"showdetailstabselected_btn_bg.png"]; 


    UIImage *castBtn = [UIImage imageNamed:@"showdetailstabidle_btn_bg.png"]; 
    UIImage *castBtnSelected = [UIImage imageNamed:@"showdetailstabselected_btn_bg.png"]; 

    UIImage *feedbackBtn = [UIImage imageNamed:@"showdetailstabidle_btn_bg.png"]; 
    UIImage *feedbackBtnSelected = [UIImage imageNamed:@"showdetailstabselected_btn_bg.png"]; 

    UIImage *promoBtn = [UIImage imageNamed:@"showdetailstabidle_btn_bg.png"]; 
    UIImage *promoBtnSelected = [UIImage imageNamed:@"showdetailstabselected_btn_bg.png"]; 

    conceptBtn = [conceptBtn imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]; 
    conceptBtnSelected = [conceptBtnSelected imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]; 

    castBtn = [castBtn imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]; 
    castBtnSelected = [castBtnSelected imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]; 

    feedbackBtn = [feedbackBtn imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]; 
    feedbackBtnSelected = [feedbackBtnSelected imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]; 

    promoBtn = [promoBtn imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]; 
    promoBtnSelected = [promoBtnSelected imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]; 

    if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad) 
    { 
     conceptViewController = [[ConceptViewController alloc] initWithNibName:@"ConceptViewController_iPad" bundle:nil]; 

     castViewController = [[CastViewController alloc] initWithNibName:@"CastViewController_iPad" bundle:nil]; 

     showDetailsFeedbackViewController = [[ShowDetailsFeedbackViewController alloc] initWithNibName:@"ShowDetailsFeedbackViewController_iPad" bundle:nil]; 

     promoViewController = [[PromosViewController alloc] initWithNibName:@"PromosViewController_iPad" bundle:nil]; 
    } 
    else if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) 
    { 
     conceptViewController = [[ConceptViewController alloc] initWithNibName:@"ConceptViewController" bundle:nil]; 

     castViewController = [[CastViewController alloc] initWithNibName:@"CastViewController" bundle:nil]; 

     showDetailsFeedbackViewController = [[ShowDetailsFeedbackViewController alloc] initWithNibName:@"ShowDetailsFeedbackViewController" bundle:nil]; 

     promoViewController = [[PromosViewController alloc] initWithNibName:@"PromosViewController" bundle:nil]; 

    } 

    conceptViewController.tabBarItem = [[UITabBarItem alloc] initWithTitle:@"CONCEPT" image:conceptBtn selectedImage:conceptBtn]; 

    castViewController.tabBarItem = [[UITabBarItem alloc] initWithTitle:@"CAST" image:castBtn selectedImage:castBtnSelected]; 

    showDetailsFeedbackViewController.tabBarItem = [[UITabBarItem alloc] initWithTitle:@"FEEDBACK" image:feedbackBtn selectedImage:feedbackBtnSelected]; 

    promoViewController.tabBarItem = [[UITabBarItem alloc] initWithTitle:@"PROMO" image:promoBtn selectedImage:promoBtnSelected];/**/ 

    UITabBarController *showDetailstabVC = [[UITabBarController alloc] init]; 

    showDetailstabVC.viewControllers = [NSArray arrayWithObjects:conceptViewController,castViewController,showDetailsFeedbackViewController,promoViewController, nil]; 

    showDetailstabVC.view.frame = CGRectMake(0, 250, screenSize.width, screenSize.height-250); 

    self.view.window.rootViewController = showDetailstabVC; 

    [self.view addSubview:showDetailstabVC.view]; 
} 

제 코드가 정확한지 알려주세요.

나는 내가 원한 것을 볼 수있다.

그러나 나는 다음과 같은 오류 얻을 TabBar의 버튼을 클릭하면 이제 문제가 :

EXC_BAD_ACCESS (코드 = exc_i386_gpflt는)

오류는 디버그 화면, 응용 정지에 주어지지 main.m 다음 행에서 :

복귀 UIApplicationMain (는 argc, argv를, 무, NSStringFromClass ([AppDelegate에 클래스]));

+0

좋아, 나는 이것이 농담이나 트롤이라고 확신한다. 그 그림이 신에 대한 사랑에서 어떻게 설명합니까? –

+1

@imon 나는 이미지의 내용을 흐리게하고 업로드 된 흐려진 이미지에 대한 이미지 아래에 설명을 올려 놓았습니다. 이미지에 대한 설명을 읽으십시오. –

+0

내가 그랬고 덜 의미가 –

답변

1

그래, 달성하고자하는 바가 UIViewController입니다. 상단 절반은 UITabbarController을 포함하는 정적 및 하단 절반이며 UIViewControllers을 표시하며 UITabbar과 정적보기 사이의 공간 만 차지합니다.

나는 이것이 UITabbarController을 아이로 만듦으로써 이루어질 수 있다고 생각했지만 틀렸을 수 있습니다. 나는 단순히 프레임을 설정하기 전에 화면에 3 명의 자식 UIViewController을 가졌습니다. 위에서 말했듯이 그것은 당신을 위해 작동하지 않으므로 2 가지 옵션이 남아 있습니다.

  1. 모든 탭 내용을 작게 만들 수 있습니다. 예를 들어 상단보기의 높이가 100 픽셀이라고 가정 해 보겠습니다. 탭에있는 UIViewController의 경우 Y 값으로 UITableView (또는 내용이나 내용이 무엇이든) 프레임을 100px에서 시작하도록 설정하면됩니다. 이것은 내 생각에 상당히 나쁜 해결책이지만 최소한의 노력이 필요합니다.

  2. 정적 섹션이 맨 위에 있고 가로로 UIScrollView 페이지가 활성화 된 "마스터"UIViewController을 만듭니다. 그리고 개별 자식 UIViewController을 자식 viewController로 추가하십시오. Tabbar을 만들고 이벤트를 수신하여이를 프로그래밍 방식으로 스크롤하거나, (Tabbar) 모양의 버튼을 만들어야 만 왼쪽/오른쪽으로 스크롤 할 수 있는지 확실하지 않습니다.

두 번째 방법은 상당히 일반적입니다. 나는 그것을 해낸 몇 가지 앱을 개발해 냈으며 온라인에서이를 달성하는 방법에 대한 많은 게시물을 보았습니다. 이렇게 : How do I put viewController's into a UIScrollView. 단순히 children viewController를 X 값으로 증가시키고 scrollViews 내용 크기를 합계로 설정해야합니다. 페이징을 켜고 세로 스크롤을 해제하십시오.

+0

좋아, 내가 안드로이드에서 동일한 만들었고 같은 종류의보기를 만들려고하고 싶습니다 어떻게 내가 원하는지 이미지를 게시합니다 –

+0

@ NiranjanBalkrishnaPrajapati 내 대답을 편집했습니다 –

+0

나는 시도하고 tabbarcontroller 및 상단 섹션보기를 설정할 수있었습니다 한 화면에 있지만 지금 문제가 발생하면 다음과 같은 오류가 발생합니다 : exc_bad_access (코드 = exc_i386_gpflt) 오류는 디버그 영역에 표시되지 않지만 응용 프로그램은 다음 줄에서 멈 춥니 다. main.m 다음은 앱이 중지되는 행입니다. @autoreleasepool { return UIApplicationMain (argc, argv, nil, NSStringFromClass ([AppDelegate class]))); } –