Я несколько дней пытался сохранить состояние UISwitch
в строке tableViewController
, но безрезультатно. Я просмотрел различные вопросы и ответы по stackOverflow и документацию Apple, но в моем приложении ничего не работает.
Вот мой делегат приложения:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSDictionary *appDefaults = [NSDictionary dictionaryWithObject:@"No" forKey:@"emailSwitch"];
[defaults registerDefaults:appDefaults];
[defaults synchronize];
}
У меня есть Root.plist в наборе Settings.bundle, и это, кажется, работает и сохраняет результаты переключения в настройках приложения, но не на tableViewController
. Например, если я переключаю его на «вкл» в настройках, когда я добавляю объект к своему tableViewController
, переключатель выключается.
Вот соответствующий код в файле tableViewController.h:
@property (nonatomic, getter=isOn) BOOL on;
- (void)toggleValue:(id)sender;
Вот соответствующий код в файле tableViewController m:
- (void)viewWillAppear:(BOOL)animated
{
if ([[NSUserDefaults standardUserDefaults] boolForKey:@"emailSwitch"])
{
[emailSwitch setOn:YES animated:NO];
}
else
{
[emailSwitch setOn:NO animated:NO];
}
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
customTableViewCell *cell = (customTableViewCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[CustomTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}
//Code regarding cell contents here
UISwitch *switchObj = [[UISwitch alloc] initWithFrame:CGRectZero];
[switchObj addTarget:self action:@selector(toggleValue:) forControlEvents:(UIControlEventValueChanged | UIControlEventTouchDragInside)];
cell.accessoryView = switchObj;
return cell;
}
-(void)toggleValue:(id)sender
{
[[NSUserDefaults standardUserDefaults] setBool:emailSwitch.on forKey:@"emailSwitch"];
[[NSUserDefaults standardUserDefaults] synchronize];
}
Когда вы добавляете объект к tableViewController
и переключаете UISwitch
на «вкл», он не сохраняет статус «вкл». Я пробовал разные подходы, но ничего не работает. Если бы кто-нибудь мог сказать мне, что я делаю неправильно, я был бы очень признателен. Заранее благодарим за любую помощь, которую вы можете предложить.