Панель навигации UITabBar скрывает панель навигации, когда представление представлено модально - PullRequest
1 голос
/ 24 декабря 2010

У меня есть приложение с UItabBarTemplate с контроллером навигации.
При выборе панели вкладок отображается ViewControllerA, который при нажатии кнопки нажимает UIPieChartTabController, который наследует "UIViewController".
Теперь я хочу еще одну панель вкладок в UIPieChartTabController.
в viewDidLoad UIPieChartTabController

- (void)viewDidLoad {
    [super viewDidLoad];

     UIView *contentView = [[UIView alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame]];
     contentView.backgroundColor = [UIColor whiteColor];
     self.view = contentView;
     [contentView release];
      UITabBarController *tabbar= [[UITabBarController alloc] init];
     tabbar.view.frame = CGRectMake(0, 0, 320, 460);
    piechartViewController *pr=[[piechartViewController alloc]init];
    pr.tagInAction=1;
    pr.title=@"Type";
    pr.tabBarItem.image=[UIImage imageNamed:@"trend.png"];
    pr.sDate=sDate;
    pr.nDate=nDate;

    piechartViewController *pr1=[[piechartViewController alloc]init];
    pr1.title=@"category";
    pr1.tagInAction=4;
    pr1.sDate=sDate;
    pr1.nDate=nDate;

    piechartViewController *pr2=[[piechartViewController alloc]init];
    pr2.title=@"paidWith";
    pr2.tagInAction=3;
    pr2.sDate=sDate;
    pr2.nDate=nDate;

    //tabbar.tabBar.delegate=self;
//this gave me error

    ExportRep *pr3=[[ExportRep alloc]init];
    pr3.tabBarItem.image=[UIImage imageNamed:@"database.png"];
    pr3.title=@"Export Expenses";

    [tabbar setViewControllers:[NSArray arrayWithObjects:pr,pr1,pr2,pr3,nil]];
    [self.view addSubview:tabbar.view];
    [pr release];
    [pr1 release];
    [pr2 release];
}

Этот фрагмент кода работал, но теперь, когда я выбираю вкладку типа viewController ExportRep, я пытался

[self presentModalViewController:objMFMailComposeViewController animated:YES];

, но навигационный контроллер objMFMailComposeViewController скрывается за представлением навигацииКонтроллерпредставление objMFMailComposeViewController.

Также viewWillAppear viewDidAppear всех контроллеров представления, которые связаны с панелью вкладок, никогда не вызывается.

Но ни одна из этих проблем не возникает для табуляции и viewcontroller, который создается UITabbarTemplate.
ПочемуЭто так?Что не так, когда я создаю панель вкладок?

Ответы [ 2 ]

0 голосов
/ 19 января 2011

Причина, по которой новый вид, представляемый модально, скрыл панель навигации, заключается в [self.view addSubview:tabbar.view];
, поэтому у него есть место для представления своего вида только в представлении родительских контроллеров, поэтому он отрезал панель навигации.
чтобы взломать его, я оставил вкладку выбранной и вместо того, чтобы представлять ее в выбранном контроллере представления, представил ее только в главном контроллере представления.

0 голосов
/ 24 декабря 2010

размещение другой tabBar внутри tabbarVC, не рекомендуется.Почему бы не использовать UIToolBar для замены мест просмотра в вашем PieChartVC вместо этого?

-признайте, причина, по которой ваш код не вызывает viewWillAppear, viewDidAppear из-за этого:

[tabbar setViewControllers:[NSArray arrayWithObjects:pr,pr1,pr2,pr3,nil]];
[self.view addSubview:tabbar.view];

здесь будет вызываться только loadView из этих prs.

вместо этого viewControllers, которые вы назначаете для tabBars, должны быть обернуты вокруг UINavigationControllers.

Поэтому что-то вроде этого вместо этого сделало бы уловку

UINavigationController *nc1 = [[UINavigationController alloc]initWithRootViewController:pr];
[nc1.view setFrame:CGRectMake:("the frame in which you wnt prs to be displayed")];
[pr.view setFrame:nc1.view.frame];
. // similarly assign NavControllers for all prs
.
.
.
[tabbar setViewControllers:[NSArray arrayWithObjects:nc,nc1,nc2,nc3,nil]];
    [self.view addSubview:tabbar.view];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...