替换tabbar选择的索引

时间:2016-12-23 15:17:33

标签: objective-c uitabbarcontroller uitabbar selectedindex

我有一个旧应用,我有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...

这样,我只需要更改故事板,代码级别就不会有任何变化。

我有办法实现这个目标吗?

主要问题

当客户要求完全更改标签栏时,我需要在所有我不喜欢的地方更改selectedIndex更改,并且感觉更加无效。所以我一直在寻找一种方法,我只会在故事板上进行更改,并且编码级别不会有任何改变。

对我来说,主要问题是在所有出错的文件中更改selectedIndex。

1 个答案:

答案 0 :(得分:2)

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

// 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) {
    // ...