我想在uitableview自定义单元格中询问uiswitch。
如果我有数组保持表中的每个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 :(得分: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或使用核心数据,但这对于像这样简单的事情来说会很复杂。
希望有所帮助!