gpt4 book ai didi

ios - 以编程方式将 UIBarButtonItem 添加到 UITabBarController 内的所有导航 View Controller

转载 作者:塔克拉玛干 更新时间:2023-11-02 10:16:00 25 4
gpt4 key购买 nike

结构如下:

  • 查看
  • 标签栏 Controller
    • 导航 Controller
      • View Controller
    • 导航 Controller
      • View Controller
    • 导航 Controller
      • View Controller
    • 导航 Controller
      • View Controller
    • 导航 Controller
      • View Controller
    • 导航 Controller
      • View Controller

以上 Controller 已在界面生成器中初始化。

我想做的是向每个导航 Controller 添加一个正确的 UIBarButtonItem 但没有成功。

这是我尝试过的:

- (void)viewDidLoad
{
[super viewDidLoad];

self.view.backgroundColor = [UIColor clearColor];
self.view.opaque = NO;
self.tabBarController.view.frame = self.view.bounds;

NSArray *currentViewControllers = self.tabBarController.viewControllers;
NSMutableArray *updatedViewControllers = [NSMutableArray array];

for (int i=0; i<currentViewControllers.count; i++) {
UINavigationController *tempNav = [[UINavigationController alloc]init];
tempNav = [currentViewControllers objectAtIndex:i];
UIBarButtonItem *dismissButton = [[UIBarButtonItem alloc]
initWithTitle:@"Done"
style:UIBarButtonItemStyleBordered
target:self
action:@selector(dismissLibraryBrowser)];
tempNav.navigationItem.rightBarButtonItem = dismissButton;
[updatedViewControllers addObject:tempNav];
[dismissButton release];
[tempNav release];

NSLog(@"Added controller number %d",i);
}

self.tabBarController.viewControllers = [NSArray arrayWithArray:updatedViewControllers];

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

代码执行没有任何错误,但按钮没有出现。我确定我在这里误解了一些东西。希望得到一些指导。

最佳答案

您通过重新创建 viewController 和临时数组使事情稍微复杂化。你只需要操作从 Nib 加载的对象

[self.tabBarController.viewControllers enumerateObjectsUsingBlock:^(UINavigationController *navigationController, NSUInteger idx, BOOL *stop) {

UIViewController *rootViewController = [navigationController.viewControllers objectAtIndex:0];

UIBarButtonItem *rightBarButtonItem =
[[UIBarButtonItem alloc] initWithTitle:@"Done"
style:UIBarButtonItemStyleBordered
target:self
action:@selector(dismissLibraryBrowser)];

rootViewController.navigationItem.rightBarButtonItem = rightBarButtonItem;

}];

关于您的应用程序的结构 - UITabBarController 的文档说

When deploying a tab bar interface, you must install this view as the root of your window. Unlike other view controllers, a tab bar interface should never be installed as a child of another view controller.

所以我建议看看重构一些东西,如果你只是偶尔需要它,为什么不考虑以模态方式呈现它呢?

关于ios - 以编程方式将 UIBarButtonItem 添加到 UITabBarController 内的所有导航 View Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10158059/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com