0

我正在使用枚举填充 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;
4

2 回答 2

2

您不能在运行时执行此操作。也是#ifdef一个预处理器指令,它在编译期间被处理。您可以改用数组并在运行时添加和删除项目。所以你会有类似的东西

NSMutableArray *arr = @[@"Section 1", @"Section 2", @"Section 3"];

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

[arr removeObjectAtIndex:0];
于 2013-11-04T21:01:35.533 回答
0

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

于 2013-11-05T01:55:55.367 回答