我有一个旧应用,我有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。
答案 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) {
// ...