Вы можете просто добавить UISwitch
в вашем дополнительном представлении. Это самый простой способ сделать это, не говоря уже о том, что он выглядит «элегантно».
Затем в коде контроллера таблицы вы можете просто вызывать селектор при каждом переключении переключателя или даже переключать сам переключатель, получая текущее состояние переключателя в вашем контроллере.
Сообщите, хотите ли вы пример кода.
--- пример кода ---
- (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;
}
Тогда у вас может быть метод, который обновляет переключатель в зависимости от изменений в вашей модели. Вы можете использовать все что угодно - делегаты, уведомления, KVO и т. Д.
Пример:
- (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];
}
}