Sie könnten einfach die UISwitch
in Ihrer Zubehöransicht hinzufügen. Das ist der einfachste Weg, um es zu tun, ganz zu schweigen davon, dass es "elegant" aussieht.
Dann könnten Sie in Ihrem Tableview-Controller-Code bei jedem Wechsel des Switches einfach einen Selector aufrufen oder den Switch selbst umschalten, indem Sie den aktuellen Status des Switches in Ihrem Controller abrufen.
Lassen Sie wissen, ob Sie ein Codebeispiel möchten.
--- Beispielcode ---
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
//add a switch
UISwitch *switchview = [[UISwitch alloc] initWithFrame:CGRectZero];
cell.accessoryView = switchview;
[switchview release];
}
cell.textLabel.text = [NSString stringWithFormat:@"%d", indexPath.row];
return cell;
}
Dann könnten Sie eine Methode, die einen Schalter auf Änderungen in Ihrem Modell auf Basis aktualisiert. Sie könnten, was Sie wollen verwenden - Delegierte, Benachrichtigungen, KVO usw.
Beispiel:
- (void)updateSwitchAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:indexPath];
UISwitch *switchView = (UISwitch *)cell.accessoryView;
if ([switchView isOn]) {
[switchView setOn:NO animated:YES];
} else {
[switchView setOn:YES animated:YES];
}
}
code smaple wäre toll, danke – eemceebee
Bearbeitet, um einige Beispielcode enthalten. –
Ich frage mich, ob Sie ein Beispiel in Bezug auf KVO für UISwitch verwendet haben. Ich versuche zu implementieren wie 'UISwitch * switchview = [[UISwitch Alloc] initWithFrame: CGRectZero]; Zelle.AccessoryView = Switchview; [Switch addObserver: Selbst forKeyPath: @ "auf" Optionen: NSKeyValueChangeSetting Kontext: NULL], 'aber meine Funktion' - (void) observeValueForKeyPath: (NSString *) keyPath ofObject: (id) Objekt ändern: (NSDictionary *) Änderung Kontext: (void *) Kontext { NSLog (@ "observeValueForKeyPath"); } 'nicht aufgerufen werden, wenn Schalter Wert – user454083