替换标签栏选择的索引

replacement for tabbar selected index

我有一个旧应用程序,其中有 5 个选项卡。每个选项卡都有广告列表和详细信息。此外,每个选项卡都有各自的添加广告。所有 5 个选项卡的设计除了一些变化外都是相同的,所以我决定只为所有 5 个选项卡使用 1 个屏幕。

现在我正在做的是在添加广告时,我正在检查我是哪个标签,并根据标签栏索引显示隐藏字段。同样适用于详细信息屏幕。示例代码如下所示。

if (self.tabBarController.selectedIndex==0) {
    field1.hidden = NO;
} else if (self.tabBarController.selectedIndex==1) {
    field1.hidden = NO;
} else if (self.tabBarController.selectedIndex==2) {
    field1.hidden = NO;
} else if (self.tabBarController.selectedIndex==3) {
    field1.hidden = NO;
} else if (self.tabBarController.selectedIndex==4) {
    field1.hidden = YES;
}

现在每个表单都有大约 15 个字段,所以我为所有字段编写了这段代码。

我注意到客户端会不断更改标签栏的位置,所以我一直在寻找有效的方法。

现在我所做的是在所有地方通过搜索替换手动更改索引位置,但是我不喜欢这样。

我正在寻找一种方法,而不是 selectedIndex,我正在寻找一些我将分配给选项卡栏的选项卡项的常量值,所以我的代码将更改如下

if (self.tabBarController.selectedIndex==adType_News) {
    field1.hidden = NO;
} else if (self.tabBarController.selectedIndex==adType_Occasions) {
.
.
And so on...

这样我只需要改变storyboard,代码层面不会有任何变化

有什么方法可以做到这一点?

主要问题

由于客户要求完全更改标签栏,我需要在所有我不喜欢的地方更改 selectedIndex 更改,并且感觉效率更低。所以我一直在寻找一种方法,只改变情节提要,而编码级别不会有任何改变。

我的主要问题是更改所有文件中的 selectedIndex,这会导致更多错误。

我想我理解这个问题的意思是代码中充满了数字文字,指的是选项卡栏的选定索引,并且有关项目排序的业务需求正在发生变化。通过将文字更改为可以集中控制的符号来修复:

// in a new file, indexes.h
#define INDEXA  (0)
#define INDEXB  (1)
#define INDEXC  (2)

// wherever existing code refers to the tab selection
#import "indexes.h"

// in the code, for example if selectedIndex == 2, change to
if (self.tabBarController.selectedIndex==INDEXC) {
    // ...