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

Ok。MyListSectionType1 を列挙リストの最後に移動してから、(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView条件付きで MyListSectionTypeMax - 1 を返すことで解決しました。

于 2013-11-05T01:55:55.367 に答える