0

我有一个TableView带有自定义 CellUILabelUISwitch. UISwitch 在自定义单元格中声明。我想在ViewDidLoadTableView 中调用这个开关。我想NSUserDefaults用来保存 UISwitch 的状态。要加载值,我必须在 ViewDidLoad 中编写代码。

@interface LabelSwitchCustomCell : UITableViewCell {
    IBOutlet UILabel  *mainLabel;
    IBOutlet UISwitch *switchButton;
}

@property (nonatomic, retain) IBOutlet UILabel  *mainLabel;
@property (nonatomic, retain) IBOutlet UISwitch *switchButton;

@end
4

2 回答 2

1
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexpath
{
    LabelSwitchCustomCell *switchCell = (LabelSwitchCustomCell *)[tableView dequeueReusableCellWithIdentifier:@"YOUR_CELL_IDENTIFIER"];
    switchCell.switchButton.on = [[NSUserDefaults standardUserDefaults] boolForKey:@"SwitchState"];
}

然后,在 Interface Builder 中,将开关与在您的自定义单元类中声明和实现的此操作连接:

- (IBAction)switchFlipped:(id)sender
{
    [[NSUserDefaults standardUserDefaults] setBool:self.switchButton.on forKey:@"SwitchState"];
}
于 2013-02-02T20:27:57.997 回答
1

您可以从代码中的任何位置将 UISwitch 的状态保存在 NSUserDefaults 中。您可以通过这种方式设置/加载开关状态:

    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
    {
//Set switch states
    if (indexPath.row == 0) 
                cell.switchBtn.on = [[NSUserDefaults standardUserDefaults] boolForKey:@"Switch1State"];
            else if(indexPath.row == 1)
                cell.switchBtn.on = [[NSUserDefaults standardUserDefaults] boolForKey:@"Switch2State"];
            else if(indexPath.row == 2)
                cell.switchBtn.on = [[NSUserDefaults standardUserDefaults] boolForKey:@"Switch3State"];
// Set switch states

// Set action for your switch
[cell.switchBtn addTarget:self action:@selector(switchingBtn:) forControlEvents:UIControlEventValueChanged];
    }
于 2013-02-02T18:38:03.137 回答