0

カスタムセルを含む UITableview があります。カスタムセルの 1 つに UISWITCH があります。テーブル ビューをスクロールすると、スイッチを ON に設定してもスイッチの状態がリセットされます。スクロール中にスイッチの状態を維持するにはどうすればよいですか。どんな助けでも大歓迎です。

-(IBAction)sameDriver:(id)sender{

if ([sender isOn]){

    NSLog(@"%@",(otherdriver.drive ? @"YES" : @"NO"));

    NSUserDefaults* defaults  = [NSUserDefaults standardUserDefaults];
    [defaults setBool: YES forKey: K_SWITCH_KEY];
    [defaults synchronize];

    Switchon = [defaults boolForKey: K_SWITCH_KEY];


if(Switchon){

    otherdriver.dfname.text = fname;
    otherdriver.dlname.text = lname;
    otherdriver.demail.text = email;
    otherdriver.dpnum.text = phone;

    }
}
else if(![sender isOn]){

    NSUserDefaults* defaults  = [NSUserDefaults standardUserDefaults];
    [defaults setBool: NO forKey: K_SWITCH_KEY];
    [defaults synchronize];

   NSLog(@"%@",(otherdriver.drive ? @"YES" : @"NO"));

    Switchon = [defaults boolForKey: K_SWITCH_KEY];

    otherdriver.dfname.text = drfname;
    otherdriver.dlname.text = drlname;
    otherdriver.demail.text = dremail;
    otherdriver.dpnum.text = drphone;


}}

IB で UISwitch を設定しています。カスタム UITableviewcell 内にあります。

ありがとう

4

2 に答える 2

1

下にスクロールすると(スイッチセルが画面外にスクロールされます)、次に上にスクロールすると(スイッチセルが画面上にスクロールされます)、スイッチの状態は保持されません。これは正しいです?

もしそうなら、問題はセルがリサイクルされて再作成されていることだと思います. これは、セルを から取得したときに発生しますdequeReusableCellWithIdentifier:CellIdentifier。これを修正するには、特別なセルに別のCellIdentifier.

それでも不明な場合は、 のコードを貼り付けてくださいtableView:cellForRowAtIndexPath:。さらにサポートさせていただきます。

于 2012-01-04T07:10:01.617 に答える