在运行时定义枚举以填充UITableView

时间:2013-11-04 20:54:05

标签: ios objective-c cocoa-touch uitableview enums

我使用枚举填充UITableView。现在在运行时,在获取服务器数据后,我需要决定是否填充第一部分。因此,我需要删除第一个枚举(MyListSectionType1)条目以使其正常工作。

typedef enum {
    MyListSectionType1,
    MyListSectionType2,
    MyListSectionType3,
    MyListSectionType4,
    MyListSectionType5,
    MyListSectionType6,
    MyListSectionType7,

    MyListSectionTypeMax,

} MyListSectionType;

我想过尝试下面的代码但是如何在运行时定义showShow是另一个问题。我尝试在我获取服务器数据的类中定义它,但这不起作用。任何线索?

typedef enum {
#ifdef showShow
    MyListSectionType1,
#endif
    MyListSectionType2,
    MyListSectionType3,
    MyListSectionType4,
    MyListSectionType5,
    MyListSectionType6,
    MyListSectionType7,

    MyListSectionTypeMax,

} MyListSectionType;

2 个答案:

答案 0 :(得分:2)

您无法在运行时执行此操作。此外,#ifdef是预处理程序指令,它在编译期间处理。 您可以使用数组,并在运行时添加和删除项目。所以你会有像

这样的东西
NSMutableArray *arr = @[@"Section 1", @"Section 2", @"Section 3"];

如果您得到不需要第一部分的回复,那么您可以致电

[arr removeObjectAtIndex:0];

答案 1 :(得分:0)

确定。我已经通过将MyListSectionType1移动到枚举列表中的最后一个然后在 - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView中有条件地返回MyListSectionTypeMax - 1来解决这个问题。