1

"이 문제가 발생 했습니까?"UITabBarController 일시적으로 더 많은 항목이없는 탐색 컨트롤에서

:

#pragma mark - UIViewController 

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { 
    // "We interrupt this designated initializer to go do our own thing ..." 
    return [self init]; 
} 

#pragma mark - NSObject 

- (id)init { 
    // Why hello there, superclass designated initializer. 
    if ((self = [super initWithNibName:@"YourNibHere" bundle:nil])) { 

     // We're in a nav controller, so set the title. 
     self.navigationItem.title = @"Item Title"; 

     // "Someone set up us the tab bar!" 
     [self setTabBarItem:[[UITabBarItem alloc] initWithTitle:@"Item Title" image:[UIImage imageNamed:@"itemIcon.png"] tag:itemTag]]; 
    } 
    return self; 
} 

(참고. 다음은 따라서 더 autorelease 전화 또는 retain/release쌍 ARC 친화적 인 코드 없음) 그래서 ...이 상단 의 UIViewControllerUINavigationController가에, 어떤 인덱스에서는 UITabBarController에 있습니다. 원할 경우 turducken 코코아보기 컨트롤러입니다.

탭 막대 항목을 탭하면 문맥이 변경되어 UIViewController으로 바뀌며 인생이 훌륭합니다.

아,하지만 다른 (탭 표시 줄) 인덱스 아래에있는보기 컨트롤러에서 프로그래밍 방식으로 전환하려면 어떻게해야합니까?

충분히 쉬운 것 같습니다. -selectedViewController:을 사용하고 전환하려는 (이 아닌UIViewController)을 전달하십시오. "거의 무해합니다." 플레이 개 이상 탭 표시 줄의 항목이있을 때

이것은 내가 그 UINavigationController가는 악명 높은 탐색 컨트롤러 아래에 자리 잡고 때마다 정말 성가신 특질로 실행 제외 (아이폰 OS에서 사용 ... 모든 시간을 작동).

이상한? 뒤로 버튼 ("자세히")을 눌러 UIViewController (More sitch, y'see로 인해 더 이상 맨 위가 아니어요) 팝업하려면이 탭 표시 줄 항목을 나타내는 테이블보기 셀의 imageViewtextLabel이 누락되었습니다. 입니다.! 거기에없는 것처럼. 빈 셀.

테이블 뷰 셀을 화면 밖으로 스크롤하고 다시 켜거나 기타 내비게이션 컨트롤러에서 멀리 이동 한 경우 다음에이 나타납니다. .? :(

뭐은 '그것은 꽤 아니다 나는이에 대한 수정을했다

+0

이전 질문이지만 동일한 기능을 수행하고 있습니다. 발행물. 해결책을 찾았습니까? –

+0

슬프게도 아직 없습니다. 핑 (ping)을 모두 고맙게 생각합니다. –

답변

0

... 마음을 알고 싶어 미심쩍은 일이 있지만, 뭔가

확장 UITabBarController가를 :.

- (void)viewDidLoad { 
    [super viewDidLoad]; 

    self.moreNavigationController.delegate = self; 
} 

- (void)navigationController:(UINavigationController *)navigationController didShowViewController:(UIViewController *)viewController animated:(BOOL)animated { 

    //Fix for not showing the selected item in the tableview. 
    if ([navigationController.topViewController isKindOfClass:NSClassFromString(@"UIMoreListController")]) { 
     [navigationController.topViewController.view.subviews enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) { 

      if ([obj isKindOfClass:[UITableView class]]) { 
      *stop = YES; 
       UITableView *tableView = (UITableView *)obj; 
       [tableView reloadData]; 
      } 
     }]; 
    } 
} 

이 방법을 사용하면 테이블 뷰가 표시 될 때 다시로드됩니다. 전환에 셀이 표시되지만 나에게 문제가되지는 않을 것입니다.

관련 문제