gpt4 book ai didi

iPhone 工具栏由多个 View 共享

转载 作者:行者123 更新时间:2023-12-03 16:53:19 28 4
gpt4 key购买 nike

我正在构建的应用程序需要在 UITabBarController 框架内为多个 View (及其 subview )显示共享的自定义 UIToolbar。自定义工具栏的内容在所有 View 中都是相同的。我希望能够将自定义工具栏设计为 xib 并从其自己的 Controller 类处理 UI 事件(我假设我可以子类化 UIToolbar 来执行此操作?)。这样我就可以定义 IBOutlet 和 IBAction 项等。然后我可以将此自定义工具栏与每个 UITabBarController View (及其 subview )关联起来。但我很难确定这是否可能 - 如果可能,如何做到这一点。

特别是,我希望能够将新 View 推送到 UINavigationController View 堆栈上,每个 View 堆栈都与父 UITabBarController 选项卡相关联。所以,总而言之,我想要一个:

  • 自定义工具栏
  • 由多个 View 共享
  • 由多个导航 Controller 管理
  • 并且导航 Controller 与父选项卡栏 Controller 的不同选项卡相关联

标签栏 Controller 本身是模态启动的,尽管我不认为这是相关的。

无论如何,标签栏 Controller 正在工作,它的子导航 Controller 也是如此。我只是在弄清楚如何将共享工具栏保留到各个 subview 时遇到了一些麻烦。我会选择一种以编程方式实现的良好干净的方式...尽管我更喜欢将工具栏的视觉设计保留在 xib 中的灵 active 。

大家有什么建议

最佳答案

相信我有“答案”...而且它是如此简单,我很尴尬以前没有想到过。创建 UIViewController 的自定义子类,在其中设置 UINavigationController 工具栏的属性(在 IB 的 xib 中设置为启用)。然后,无论您希望包含该工具栏的任何其他 View ,您只需对该类进行子类化即可。就我而言,我命名了 UIViewController 的 ChallengeToolbar 子类,然后我这样做了:

UIImage *vaultImage = [UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"goldbar" ofType:@"png"]];
UISegmentedControl *vaultButtonControl = [[UISegmentedControl alloc] initWithItems:[NSArray arrayWithObjects:vaultImage, nil]];
vaultButtonControl.segmentedControlStyle = UISegmentedControlStylePlain;
vaultButtonControl.momentary = YES;
[vaultButtonControl addTarget:self action:@selector(goNavVault:) forControlEvents:UIControlEventAllEvents];
UIBarButtonItem *vaultButton = [[UIBarButtonItem alloc] initWithCustomView:vaultButtonControl];
vaultButton.customView.frame = CGRectMake(0,0,40,20);

UIBarButtonItem *invite = [[UIBarButtonItem alloc] initWithTitle:@"Invite" style:UIBarButtonItemStyleBordered target:self action:@selector(goNavVault:)];

UIBarButtonItem *flexItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil];
NSArray *items = [NSArray arrayWithObjects: invite, flexItem, flexItem, flexItem, vaultButton, nil];
[self setToolbarItems:items animated:NO];
[vaultButtonControl release];
[vaultButton release];
[invite release];
[flexItem release];

...在 viewDidLoad 方法中。然后,从任何我希望工具栏出现的 View 中,我只需设置 View 的 Controller 类来子类化我的 ChallengeToolbar 类,而不是 UIViewController。呃!

关于iPhone 工具栏由多个 View 共享,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2925774/

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