0

3つのセクションがあるテーブルがあります。セクションごとに4つの行があります。テーブル全体で3つの選択を行う、セクションごとに1つの選択が必要です。現在のセクションをリセットし、新しい選択を設定する次の関数を使用してこれを実行しようとしています。

- (void)selectOneRow:(int)row inSection:(int)section
{
    NSIndexPath *indexPath = [NSIndexPath indexPathForRow:row inSection:section];

    for(int i = 0; i < [[self.dataSource objectAtIndex:section] count]; ++i) {
        NSIndexPath *ip = [NSIndexPath indexPathForRow:i inSection:section];
        [self.table deselectRowAtIndexPath:ip animated:NO];
        //[[self.table cellForRowAtIndexPath:ip] setHighlighted:NO];
    }

    [self.table selectRowAtIndexPath:indexPath animated:NO scrollPosition:UITableViewScrollPositionNone];
    //[[self.table cellForRowAtIndexPath:indexPath] setHighlighted:YES];

    [self disableInteractionForRow:row inSection:section];
}

- (void)disableInteractionForRow:(int)row inSection:(int)section
{
    NSIndexPath *indexPath = [NSIndexPath indexPathForRow:row inSection:section];

    for(int i = 0; i < [[self.dataSource objectAtIndex:section] count]; ++i) {
        NSIndexPath *ip = [NSIndexPath indexPathForRow:i inSection:section];
        [[self.table cellForRowAtIndexPath:ip] setUserInteractionEnabled:YES];
    }

    [[self.table cellForRowAtIndexPath:indexPath] setUserInteractionEnabled:NO];
}

最初のセクションの最初の行を選択する例は次のとおりです。

[self selectOneRow:0 inSection:0];

これは最初はうまく機能しますが、その後は毎回行がオフになり、セクションが空白のままになります。どうすればこれを修正できますか?それとも、そもそもこれをすべて間違っているのでしょうか?助けてくれてありがとう。

**画像の追加を編集**

ここに画像の説明を入力してください

4

1 に答える 1

1

複雑にしすぎているようです。3つのセクションを持つ1つのテーブルビューに3つの選択肢を配置する代わりに、3つの別々のテーブルと3つの別々のビューを作成します。

たとえば、iPhoneの設定アプリに移動します。[メール、連絡先、カレンダー]をタップし、[メール]セクションのタイトルの下にある[表示]、[プレビュー]、[最小フォントサイズ]のオプションまで下にスクロールします。これらの設定のそれぞれについて、新しいビューが新しいテーブルビューコントローラーでプッシュされ、オプションの1つを選択してから戻ることができます。これにより、コードは言うまでもなく、インターフェイスがクリーンに保たれます。

うまくいけば、このように再構築することでうまくいくでしょう。あなたが今やっているやり方が間違っていると言えるかどうかはわかりませんが、それはAppleが彼らのアプリをどのように構築しているかと一致していません。

于 2012-05-24T20:36:35.390 に答える