以编程方式创建UINavigationController

问题描述 投票:0回答:1

只是因为我无法找到一种安全的方式(从某种意义上说,它可以被苹果公司拒绝)定制UITabbar,特别是UITabBarItem,所以我正在尝试一些解决方法。我有一个主视图,可以在上面重新创建一种UITabBar,这是一个带有两个按钮的普通视图。这(大致)是当前层次结构:

-MainView

-占位符(UIView)

-fakeTab(UIView)

[我想做的是,在fakeTab中点击一个按钮后,构建一个UINavigationController并将其添加到“ placeholder”视图中,以便fakeTab保持在顶部,并且整个导航都在占位符级别进行。

我已经在拦截自来水按钮的方法中尝试过这段代码,并且可以正常工作,我可以看到ipvc.view已添加到占位符。

IPPlantsViewController *ipvc = [[IPPlantsViewController alloc] initWithNibName:@"IPPlantsView" bundle:[NSBundle mainBundle]];
UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:ipvc];
UIView *placeholder = [self.view viewWithTag:200];
[placeholder addSubview:ipvc.view];

但是稍后当我从ipvc内部调用时,什么也没发生:

IPAttributes *ipas = [[IPFactory findPlantByIndex:indexPath.row] attrs];
[self.navigationController pushViewController:ipa animated:YES];
objective-c uinavigationcontroller
1个回答
0
投票

我自己找到解决方案。我做错的是将ipvc控制器视图附加到占位符。而不是这样做:

[placeholder addSubview:nav.view];

并且一切正常,我的假标签栏完全定制:-)

但是,作为旁注,viewWillAppear似乎从未被调用。知道为什么会很有趣。我通过使IPPlantsViewController成为UINavigationController的委托来部分解决。

© www.soinside.com 2019 - 2024. All rights reserved.