1

こんにちは、UITableView と UISwitch に取り組んでいます。UISwitches を含むカスタム セルがあります。最初は UISwitch がオフで、オンにします。別のセルで UISwitch をオンにすると、最初にオンになっていた UISwitch がオフになるはずです。これを cellForRowAtIndexPath に実装しています。

特定の症状に対してremedyIDが選択されているかどうかを確認しています。それが選択されている場合は、スイッチをオンにして残りをオフにする必要があります。私はデータを公開しています。

cell.remedyID=[[[remedyArray objectAtIndex:indexPath.row] 
                              objectForKey:@"RemedyID"]intValue];

cell.symptomIDNo =[[[remedyArray objectAtIndex:indexPath.row]
                                  objectForKey:@"SymptomID"]intValue];

int checkValue = [[activeNotificationDictionary objectForKey:
                   [[remedyArray objectAtIndex:indexPath.row] 
                          objectForKey:@"SymptomID"]]intValue];

if (cell.remedyID == checkValue){

    objdb.notifyMe.on = YES;
} else {

    objdb.notifyMe.on = NO;
}


- (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex{

    if (buttonIndex != [alertView cancelButtonIndex]){

        [activeNotificationDictionary setObject:
          [NSNumber numberWithInt:selectedRemedyID] forKey:
                             [NSNumber numberWithInt:iPath]];

        [remedyTableView reloadData];
     }    
}

だから誰かが私を助けることができれば..それは素晴らしいだろう

4

2 に答える 2

0

あなたのremedyArrayにはレメディオブジェクトが含まれていると思います。これらのオブジェクトにはブール型プロパティがあり、そのプロパティを使用してオンとオフを切り替える必要があります。1つをオンにするときは、繰り返して他の1つをオフにします。救済クラスにBOOLプロパティを追加できない場合は、継承されたクラスまたはクラス拡張を作成することを検討してください。これが1つの方法です。メモリについてあまり心配している場合は、インスタンス変数を使用して、スイッチがオンになっている行のインデックスパスを格納します。その変数の表示を使用すると、それに応じてセルはスイッチがオンまたはオフになっていることを意味します。新しいスイッチが選択されたら、リロードデータを呼び出すだけで、テーブルが正しく描画されます。

于 2013-01-21T20:05:43.123 に答える
0

データ配列でブール値を使用して、uiTable がチェックするコンテンツを提供し、スイッチがオンまたはオフになっていることを確認します。

1 つのスイッチをトリガーすると、テーブルビュー デリゲートであるクラスのグローバル変数にインデックスが保存されます。次に、アラートビューで、保存されたインデックスを使用して、データ配列のスイッチの状態のブール値を操作できます。その後、テーブルをリロードします。

もちろんcellForRowAtIndexPath、スイッチの状態がブール値から取得され、デフォルトでオフに設定されないように、そのように変更する必要があります。

于 2013-01-21T17:25:19.470 に答える