2012-05-04 4 views
0

저는 아이폰을 처음 사용하고 일부 특정 페이지에만로드해야하는 사용자 정의 탭 막대를 추가 한 응용 프로그램을 시작했습니다. 탭 바는 제 기대대로 작동합니다. 에서iOS5 사용자 정의 탭 막대

#import <UIKit/UIKit.h> 
@class MainMenuViewController; 

@interface RoutineListViewController : UIViewController<UITabBarDelegate>{ 
    MainMenuViewController *homeBtn; 

    UITabBar *mainTabBar; 
    UIViewController *routineTabViewController; 
    UIViewController *calendarTaViewController; 
    UIViewController *editTabViewController; 
} 

@property (nonatomic, retain) IBOutlet UITabBar *mainTabBar; 
@property (nonatomic, retain) IBOutlet UIViewController *routineTabViewController; 
@property (nonatomic, retain) IBOutlet UIViewController *calendarTabViewController; 
@property (nonatomic, retain) IBOutlet UIViewController *editTabViewController; 

- (IBAction)goToHome:(id)sender; 

@end 

: 이제 문제는 내가 탭 표시 줄이 표시 계속해서 다른 페이지로 이동 나를 위해 심각한 문제가 발생할 때 ... 가 여기 내 구현 .H에서

입니다 것입니다. m, 난으로 탭을 구현하고있다 :

- (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item { 
    switch (item.tag) { 
     case 1: 
      if (routineTabViewController == nil) { 
       self.routineTabViewController =[[RoutineListViewController alloc] initWithNibName:@"RoutineListViewController" bundle:nil]; 
       [self.view insertSubview:routineTabViewController.view belowSubview:mainTabBar]; 
       routineTabViewController = nil; 
       [routineTabViewController release]; 
      } 

      break; 
     case 2: 
      if (calendarTabViewController == nil) { 
       self.calendarTabViewController =[[CalendarTabViewController alloc] initWithNibName:@"CalendarTabViewController" bundle:nil]; 
       [self.view insertSubview:calendarTabViewController.view belowSubview:mainTabBar]; 
       calendarTabViewController = nil; 
       [calendarTabViewController release]; 
      } 

      break; 
     case 3: 
      if (editTabViewController == nil) { 
       self.editTabViewController =[[EditTabViewController alloc] initWithNibName:@"EditTabViewController" bundle:nil]; 
       [self.view insertSubview:editTabViewController.view belowSubview:mainTabBar]; 
       editTabViewController = nil; 
       [editTabViewController release]; 
      } 

      break; 
     default: 
      break; 
    } 
} 

내가 다른 페이지로 이동 버튼을 구현할 때, 탭 표시 줄이 보여주는 유지합니다. EditTabViewController.m 파일의 버튼 구현은 다음과 같습니다. 애플의 규칙에 따라

- (IBAction)goToHome:(id)sender { 
    homeBtn = [[MainMenuViewController alloc] initWithNibName:@"MainMenuViewController" bundle:nil]; 
    [self.view addSubview:homeBtn.view]; 
} 
+0

잘못된 형식의 죄송합니다 ... –

답변

1

는 TabBarController의 주요 컨테이너로을 가정 입니다. 또한 사용자 정의 UITabBar을 구현하는 경우이를 사용하여 사용자를 다른보기로 푸시합니까? 그렇다면 UITabBar이 사라지면 사용자는 어떻게 반환합니까? 구현하지 왜

특정 페이지를 볼 때 만 막대가 표시하려면

하는 UINavigationController (주 컨테이너 등)와 뿌리가 같은 기능을 수행하는 UIToolbar을 구현 UIViewController 있습니다. 그런 다음 다른 페이지로 이동하면 (UIPageControl의 다른 페이지 나 UIWebView의 웹 페이지가 아닌 새로운 화면을 의미 함), UIToolbar을 포함하지 않는 새 UIViewController을 넣습니다 . 이 같은의

종류 :

--UINavigationController 
    | 
    -->UIViewController as RootViewController --> Contains UIToolbar 
     | 
     -->Pushes UIViewController --> Has no UIToolbar 

편집/업데이트

난 그냥 코드를보고

, 그리고 나는 당신이 무슨 말을 하려는지 이해가 확실하지 않다 이루다. 난 당신이 어떻게 든 실제로는 하나를 사용하지 않고 UINavigationController 비슷한 동작을 구현하려고 할 수도 있습니다 같아요.


편집/업데이트 # 2 난 당신이 이런 식으로 구현 될 수있는 행동 싶은 생각 : 위의 계층 구조를 사용하는 경우

UINavigationController (containing IconMenuViewController as RootViewController) 
| 
--> PageViewController (push into this from any icon touch in IconMenuViewController) 
     --> Contains UIToolbar/UITabBar 

에서, UINavigationController가 자동으로 제공됩니다 NavigationBar을 화면 상단에 놓고 뒤로 버튼을 제공합니다. UIToolbar 또는 UITabBarPageViewController의 일부로 만들면 푸시하고 팝하는 동안보기 컨트롤러와 함께 나타나고 사라집니다. 말이 돼?

+0

내가 시도하고있는 것은 ... 일부 메뉴 아이콘이있는 UIViewController가 있습니다. meny 아이콘을 클릭하면 3 개의 탭이 포함 된 페이지로 이동하게되고 상단에는 메인 메뉴로 돌아갈 수있는 "홈"버튼이 생깁니다.위의 코드를 사용하여 모든 것을 구현했지만 '집'버튼을 클릭하면 주 메뉴 페이지로 이동하지만 하단에는 탭 표시 줄이 표시됩니다. 내 코드가 정확하고 실현 가능하다는 것을 알지 못한다. 친절하게 도와주세요. –

+0

내가 말했듯이, 당신이 오히려'UIToolbar'를 사용하는 것처럼 들리지만, 어쨌든, 당신은 ** UINavigationController를 사용하는 설정을 가지고 있지 않은 것처럼 들립니다. 네비게이션 기반 앱을 살펴 봐야한다. 네가 고심하고있는 기능 중 일부를 자동으로 관리한다고 생각하기 때문이다. – mbm29414

+0

도움을 주셔서 감사합니다. 나는 그걸로 또한 시도 할 것입니다 ... –

관련 문제