2012-03-20 16 views
1

スイッチの状態を保存します。私はカスタムセルクラスの魔女の印刷を作成しましたラベルを切り替えますが、いくつかのテキストを検索してテーブルビューをリロードし、選択したスイッチの状態が変更される場合、その状態を維持できるかどうかという問題があります。TableViewでUISwitchの状態を保存して読み込みます。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ 
    .... 
selectionStyle = UITableViewCellSelectionStyleNone; 
CfResultFatch *temp = [result objectAtIndex:indexPath.row]; 
NSLog(@"%@",temp.complanName); 
//[cell.switchOnOff setOn:NO]; 
[cell.switchOnOff setTag:indexPath.row]; 
[cell.switchOnOff addTarget:self action:@selector(selectUser:)forControlEvents:UIControlEventValueChanged]; 
[cell.switchOnOff setTag:indexPath.row]; 
cell.lblUserName.text = temp.complanName; 
cell.textFld.text = temp.cipd; 
return cell; 
} 

//コールスイッチ状態変化

-(IBAction)selectUser:(UISwitch*)sender{ 
if(sender.on) 
{ 
    [selectedpet addObject:[result objectAtIndex:sender.tag]]; 
}else{ 
    NSLog(@"%@",sender); 
    for(int j=0;j<[selectedpet count]; j++) 
        { 
         CfResultFatch *temp = [result objectAtIndex:sender.tag]; 
         CfResultFatch *temp1= [selectedpet objectAtIndex:j]; 
         if([(temp.complanName)isEqualToString:(temp1.complanName)]) { 
         [selectedpet removeObjectAtIndex:j]; 
      } 
    } 
    } 
} 

//と検索バーで検索し、いくつかのテキストとデータを検索するとき、このMethodeのコールであるselectUserは、データベースの問題からの変更はここにあるされています私は上の0と1のインデックススイッチを選択し、いくつかのテキストを検索し、テーブルビューで新しいデータは、0と1のインデックスONに付属して、それを維持するために、どのように、どのようにスイッチの私の以前の状態

- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText{ 
NSString *weburl = [NSString stringWithFormat:@"%@%@", @"http://192.168.1.196/ravi/searchUser.php?mname=",searchText]; 
NSURL *url = [NSURL URLWithString:weburl]; 
NSData *data =[NSData dataWithContentsOfURL:url]; 
[self getData:data]; 
[temptab reloadData]; 
} 

を取得し、 y A。私の貧しい英語のために申し訳ありません

+0

ジャストノート:UITableViewCellを示すとき、次に

NSMutableDictionary *states = [NSMutableDictionary alloc] init]; [states setObject:[NSNumber numberWithBool:sender.on] forKey:[NSNumber numberWithInt:sender.tag]] 

何もありません'cell.switchOnOff'のタグを2回設定する理由。また、セルを初期化するときに 'cell.switchOnOff'のターゲットを設定することもできます。セルを再利用するたびにこれを行う理由はありません。さらに、 'UITableViewCell'をサブクラス化してInterface Builderでセルを設定したり(例えばスイッチを追加するなど)、セルのクラスをサブクラスに設定すると、タグに苦労したり設定したりする必要はありませんあなたの 'UISwitch'プログラム的に。長期的には、これはより良いパフォーマンスを与えると信じています。 – simonbs

答えて

3

変更された場合、UISwitchの状態を保存する必要があります。それは、これを行うための最善の方法ではないかもしれませんが、あなたは、このような辞書に状態を格納することができ:

if ([states objectForKey:[NSNumber numberWithInt:indexPath.row]] != nil) 
    cell.switchOnOff.on = [[states objectForKey:[NSNumber numberWithInt:indexPath.row]] boolValue] 
else 
    cell.switchOnOff.on = NO; 
+0

しかし、このコードはどこに置くのですか?あなたは私に教えてくれますか? – ravi

+0

あなたは 'states'をあなたのインターフェイスに入れます。そして、あなたはそれを使う前に 'states'を割り当てます。これはあなたの 'viewDidLoad:'にある可能性があります。次に、私の答えの最後の部分は、あなたのセルを再利用するときにあなたの 'tableView:tableView cellForRowAtIndexPath:'に入れます。 – simonbs

+0

私はそれを試してみるよ、ありがとう@SimonBS – ravi

関連する問題