UITableView'imde hücreleri yönetmek için TableCellViewController var. Her bir hücrenin bir UISwitch (dictTypeSwitch) etiketi vardır. Olayları değiştirmek için bir yöntem atamak istiyorum, böylece buton durumunu kaydedebiliyorum. itirazÖzel eylem ekle: @selector için UISwitch üzerinde TableViewCell
atama setState fonksiyonu:
[cell.dictTypeSwitch addTarget:self action:@selector(setState:) forControlEvents:UIControlEventTouchUpInside];
fonksiyonunu olayını işlemek için:
Şimdiye kadar yaptık gönderenin itibaren
- (void)setState:(id)sender {
BOOL state = [sender isOn];
NSString *rez = state == YES ? @"YES" : @"NO";
NSLog(rez);
}
Ben UISwitch nesneyi elde ettiğimiz Ben devlet alabilir. Şimdiye kadar her şey yolundadır.
Ancak, UISwitch durumunu kaydetmek istiyorsam, bu hücre için rowIndex almak zorundayım. Bunu nasıl başarabilirim?
The cells are made inside function cellForRowAtIndexPath. Se the code bellow:
// Customize the appearance of table view cells.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"DictionariesTableCellViewController";
DictionariesTableCellViewController *cell = (DictionariesTableCellViewController *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"DictionariesTableCellViewController" owner:nil options:nil];
for (id currentObject in topLevelObjects) {
if ([currentObject isKindOfClass:[UITableViewCell class]]) {
cell = (DictionariesTableCellViewController *) currentObject;
break;
}
}
}
// Configure the cell...
cell.dictTypeLabel.text = [NSString stringWithFormat:@"row - %i",indexPath.row];
[cell.dictTypeSwitch addTarget:self action:@selector(setState:) forControlEvents:UIControlEventTouchUpInside];
return cell;
}
Teşekkür
Teşekkür Kenny ile endeks yolunu alabilir ... –