Сохранить и загрузить состояние UISwitch в TableView - PullRequest
1 голос
/ 20 марта 2012

Я хочу сохранить состояние переключателя.Я создал пользовательский класс ячеек с печатью одного переключателя на этикетке, но есть проблема, что, если я найду некоторый текст, перезагрузится табличное представление, и мое выбранное состояние переключателя изменится, возможно ли сохранить это состояние?

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
  ....
selectionStyle = UITableViewCellSelectionStyleNone;
CfResultFatch *temp = [result objectAtIndex:indexPath.row];
NSLog(@"%@",temp.complanName);
//[cell.switchOnOff setOn:NO];
[cell.switchOnOff setTag:indexPath.row];
[cell.switchOnOff addTarget:self action:@selector(selectUser:)forControlEvents:UIControlEventValueChanged];
[cell.switchOnOff setTag:indexPath.row];
cell.lblUserName.text = temp.complanName;
cell.textFld.text = temp.cipd;
return cell;
}

// selectUser, который вызывается при изменении состояния переключателя

-(IBAction)selectUser:(UISwitch*)sender{
if(sender.on)
{
    [selectedpet addObject:[result objectAtIndex:sender.tag]];
}else{
    NSLog(@"%@",sender);
    for(int j=0;j<[selectedpet count]; j++)
                   {
                       CfResultFatch *temp = [result objectAtIndex:sender.tag];
                       CfResultFatch *temp1= [selectedpet objectAtIndex:j];
                       if([(temp.complanName)isEqualToString:(temp1.complanName)]) {
                      [selectedpet removeObjectAtIndex:j];
          }
    }
  }
}

// и Search in searchBar этот метод является вызовом при поиске некоторого текста и изменении данных из базы данныхпроблема здесь заключается в том, что я выбираю 0 и 1 индексный переключатель, а затем выполняю поиск некоторого текста, новые данные в табличном представлении приходят с 0 и 1 индексным включением, как его поддерживать и как получить мое предыдущее состояние Switch

- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText{
 NSString *weburl = [NSString stringWithFormat:@"%@%@", @"http://192.168.1.196/ravi/searchUser.php?mname=",searchText];
 NSURL *url = [NSURL URLWithString:weburl];
 NSData *data =[NSData dataWithContentsOfURL:url];
 [self getData:data];
 [temptab reloadData];
}

И я.извините за мой плохой английский

1 Ответ

3 голосов
/ 20 марта 2012

Вы должны сохранить состояние UISwitch при его изменении.Возможно, это не лучший способ сделать это, но вы можете сохранить состояния в словаре, например так:

NSMutableDictionary *states = [NSMutableDictionary alloc] init];
[states setObject:[NSNumber numberWithBool:sender.on] forKey:[NSNumber numberWithInt:sender.tag]]

Затем при отображении UITableViewCell:

if ([states objectForKey:[NSNumber numberWithInt:indexPath.row]] != nil)
    cell.switchOnOff.on = [[states objectForKey:[NSNumber numberWithInt:indexPath.row]] boolValue]
else
    cell.switchOnOff.on = NO;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...