2013-04-12 83 views
-2

我想問一下uitableview自定義單元中的uiswitch。關閉並重新打開應用程序時,uiswitch在uitableview持久性中?

如果我有一個數組來保存表中的每個uiswitch的狀態並在Change Value Event上更新它。但是,每次我打開應用程序重置爲初始狀態時,此更改都不是持久性。我的問題是如何使我的應用程序的變化持久性,每當我關閉它,並重新打開它?

這是我的變化值的代碼:

-(void)switchChanged:(UISwitch *)sender 
{ 
    UITableViewCell *cell = (UITableViewCell *)[sender superview]; 
    NSIndexPath *x=[mainTableView indexPathForCell:cell]; 

    NSMutableArray *repl = [[NSMutableArray alloc] init]; 


    if (sender.on) 
    { 
     repl= [SwitchArray objectAtIndex:x.section] ; 
     [repl replaceObjectAtIndex:x.row withObject:@"ON"]; 


    } 
    else 
    { 
     //call the first array by section 
     repl= [SwitchArray objectAtIndex:x.section] ; 
     [repl replaceObjectAtIndex:x.row withObject:@"OFF"]; 

    } 
} 

這裏是在viewDidLoad中數組的初始值:

for(int j=0 ; j < 30 ; j++) 
       [switchArray addObject:@"ON"]; 

預先感謝。我很欣賞你的協作這將讓我開心

+0

你怎麼堅持陣列? NSUserDefaults,核心數據? –

回答

1

在應用程序使用之間持久化數組的一個簡單方法是將數組寫出到pList。

爲了做到這一點,你需要一個地方來存儲文件,採取下面的例子:

- (NSURL *)switchArrayFilePath { 

    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
    NSString *documentsDirectory = [paths objectAtIndex:0]; 

    NSURL *filePath = [NSURL fileURLWithPath:[documentsDirectory stringByAppendingPathComponent:@"SwitchArray.plist"]]; 

    return filePath; 
} 

然後才能加載您的陣列,您可以在viewDidLoad:讀取的plist回例如:

self.switchArray = [[NSMutableArray alloc] initWithContentsOfURL:[self switchArrayFilePath]]; 

然後才能寫出來的數據,可以使這樣的事情在viewWillDisappear:

[self.switchArray writeToURL:[self switchArrayFilePath] atomically:YES]; 

在iOS上使用這種類型的數據的其他方法將使用NSUserDefaults或使用核心數據,但這對於像這樣簡單的事情來說會很複雜。

希望有幫助!

相關問題