0

我知道这个问题的措辞有点奇怪,但让我解释一下我要做什么:

假设我有一个带有 2 个选项卡的应用程序,每个选项卡都有自己的视图。两个视图几乎完全相同,除了一个包含一个或两个按钮,另一个没有,反之亦然。

我已经在 Storyboard 模式下创建了一个视图,现在我想对其进行一点点更改,并为另一个选项卡重用相同的视图。

我不想做一个深拷贝,因为如果我改变一个,那么我就必须改变另一个,这可能会导致两者之间的一些不一致。

那么我应该如何为多个选项卡使用相同的通用视图,并根据我所在的选项卡对其进行一些小改动?

我应该在情节提要视图中添加通用内容,然后以编程方式添加特定的选项卡专有内容吗?如果我这样做了,我需要一种方法来检测选择了哪个选项卡,对吧?有没有办法做到这一点

感谢您的任何建议!

4

1 回答 1

1

你不需要故事板。当然,您可以将视图拖到那里并将其分配给特定的类并在其中编写所有内容,但是如果您真的只需要一个视图,则情节提要是无用的。如果您想更改某些内容,您应该以编程方式处理子视图。这很好,你有很棒的功能,比如animationWithDuration:

为了检查您的 UITabBarController 中的哪个选项卡被选中,您可以使用self.tabBarController.selectedIndex它并将其与所选选项卡的给定索引进行比较。

编辑:

如果我们假设您在 Tab 上有一个索引为 0 的绿色 Button,并且相同的 Button 应该在上方滑动一点,并且当点击索引为 1 的 Tab 时,一个红色的 Button 应该出现在绿色 Button 的位置。

UIButton *greenButton = [[UIButton alloc] initWithFrame:CGRectMake(0, 320, 100, 20)];
    greenButton.backgroundColor = [UIColor greenColor];
    [self.view addSubview:greenButton];


    UIButton *redButton = [[UIButton alloc] initWithFrame:CGRectMake(0, greenButton.frame.origin.y, 100, 20)];
    greenButton.backgroundColor = [UIColor redColor];

    if (self.tabBarController.selectedIndex == 1) {
        [UIView animateWithDuration:1.0 animations:^{
            greenButton.frame = CGRectMake(0, 300, 100, 20);
        } completion:^(BOOL finished) {
            [self.view addSubview:redButton];
        }];
    }

首先,您创建两个按钮并将绿色按钮添加到视图中。(第一个视图位于索引 0)。然后检查 selectedIndex 是否为 1 并为周围的按钮设置动画。

于 2013-07-20T20:38:42.107 回答