0

この質問のような同様の質問をいくつか検索します セグメント化されたコントロールを使用してテーブルを表示するアプローチが必要ですか?

ソリューションは単一のテーブルビューを使用しています

しかし、私の問題は少し違うと思います

ビューにはセグメント化されたコントロールがあるため、「DHCP」と「手動」の 2 つの選択肢があります。

「DHCP」を押すと、セグメント化されたコントローラーの下にグループ化されたテーブルがあります

このテーブルビューは編集できません。各行に 3 つの項目 (IP アドレス、マスク、ルーター) のみが表示されます

ただし、「手動」を押すと、テーブルビューが編集可能になります

IP Address : 169.95.192.1行 1" "、行 2 " Subnet mask 255.255.255.0"...のようにのみ入力できます。

だから私の質問は

<1>セグメント化された制御を使用して 2 つの異なるテーブルを切り替える方法は?

<2>編集可能なテーブルビューを作成するには?

この質問を読んで返信していただきありがとうございます。

4

1 に答える 1

0

BOOL右...まあ-グローバルな例が必要ですBOOL isManual;

UITableViewDatasource の各メソッドで、この bool をチェックする必要があります。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    static NSString *CellIdentifier = @"Cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier] autorelease];
    }

    if(isManual){
        // set cell content for manual
    }
    else{
        //set cell content for DCHP
    }

    return cell;
}

// this function allows you to set a table view cell as editable
// look up UITableView delegate methods for more :)
- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath {
    if(isManual){
        return YES;
    }
    else{
        return NO;
    }
}

そして似ています。

次に、セグメント化されたコントロールのコールバック メソッドで isManual を変更reloadDataし、テーブルで次のようにします。

- (void)segmentedControlChanged:(id)selector {
    UISegmentedControl *control = selector;
    int selected = [control selectedSegmentIndex];

    if(selected == 0){
            isManual == NO;
        }
        else{
            isManual == YES;
        }
    [self.tableView reloadData];
}

多少あいまいですが、多少役立つことを願っています。:)

于 2010-09-24T09:01:15.213 に答える