如何在 UITabViewController 的所有选项卡中显示单个视图 (UIButton)?
例如,我需要在所有选项卡中保持一个“信息”按钮可见,而不是将其添加到所有选项卡的 XIB 中,并且不重写所有选项卡中的重复代码。
如何在 UITabViewController 的所有选项卡中显示单个视图 (UIButton)?
例如,我需要在所有选项卡中保持一个“信息”按钮可见,而不是将其添加到所有选项卡的 XIB 中,并且不重写所有选项卡中的重复代码。
实现一个 Tab Bar Controller 类,并在该viewDidLoad
方法中循环所有 Tab Bar View Controller 并以编程方式添加您的按钮。
- (void)viewDidLoad
{
[super viewDidLoad];
for(UIViewController *viewController in [self viewControllers]){
UIButton *infoButton = [UIButton buttonWithType:UIButtonTypeInfoDark];
CGRect buttonRect = infoButton.frame;
// This will place the button 20px away from the top right corner
buttonRect.origin.x = self.view.frame.size.width - buttonRect.size.width - 20;
buttonRect.origin.y = 20;
[infoButton setFrame:buttonRect];
[infoButton addTarget:self action:@selector(showInfo:) forControlEvents:UIControlEventTouchUpInside];
[viewController.view addSubview:infoButton];
}
}
我有2个解决方案给你:
将按钮(或者更确切地说是带有按钮的自定义 UIView)保存为共享实例(永久保存)。然后,您可以从每个 viewController 访问它。每个 viewController(每个选项卡)都会有一个相同大小的 UIView,每次都会设置为该按钮 View。(或者如果您选择将其添加为子视图)。viewWillAppear:这样做是一个明智的选择。
如果 tabBar 是自定义的,您可以添加委托方法,每次您尝试显示不同的方法时都会调用该方法。然后,您可以将那里的按钮视图传递给下一个 viewController。这个选项的缩小是在设置按钮之前需要初始化下一个视图控制器。