2

如何在 UITabViewController 的所有选项卡中显示单个视图 (UIButton)?

例如,我需要在所有选项卡中保持一个“信息”按钮可见,而不是将其添加到所有选项卡的 XIB 中,并且不重写所有选项卡中的重复代码。

4

2 回答 2

1

实现一个 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];
    }
}
于 2013-07-19T15:01:26.323 回答
1

我有2个解决方案给你:

  1. 将按钮(或者更确切地说是带有按钮的自定义 UIView)保存为共享实例(永久保存)。然后,您可以从每个 viewController 访问它。每个 viewController(每个选项卡)都会有一个相同大小的 UIView,每次都会设置为该按钮 View。(或者如果您选择将其添加为子视图)。viewWillAppear:这样做是一个明智的选择。

  2. 如果 tabBar 是自定义的,您可以添加委托方法,每次您尝试显示不同的方法时都会调用该方法。然后,您可以将那里的按钮视图传递给下一个 viewController。这个选项的缩小是在设置按钮之前需要初始化下一个视图控制器。

于 2013-07-19T14:57:05.993 回答