Установите переключатель вкл / выкл в ячейке (ошибка 2.2.1 до 3.0) - PullRequest
0 голосов
/ 02 августа 2009

Я работаю над обновлением моего приложения до версии 3.0, и возникла новая ошибка, которой не было в 2.2.1 (на самом деле это единственная проблема, с которой я столкнулся при обновлении ... кроме setText: is устаревшее предупреждение)

У меня есть tableView с ячейками, которые имеют переключатели на них. С помощью viewWillAppear я устанавливаю эти переключатели на основе значений, считанных из файла plist.

Проблема: теперь, когда я перешел на 3.0, мне нужно использовать tabBar, чтобы переходить назад и вперед между этим tableView и любым другим представлением, прежде чем он установит значения переключателя. Используя отладчик в первый раз и во второй раз, я проверил, что он выполняет функцию «refreshSwitches» оба раза ... т.е. нет разницы в том, как он проходит через код / ​​функции ... в первый раз, второй или в любое время после этого.

Значения считываются из plist правильно, но все переключатели выключены ... при первом появлении вида ?? Любые идеи.


Вот код, который работал в 2.2.1, но не в 3.0. Примечание. Я добавил AlertView для отладки (а также использования обычных средств отладки) ...

при первом обращении к представлению, которое я получаю в AlertView:

1 НЕ включен

второй (и любой оставшийся раз) переход к представлению, которое я получаю в AlertView:

1 IS on

// I've Tried viewDid and Will Appear, both have the same result.
    - (void)viewDidAppear:(BOOL)animated
{
    [self refreshView];
}

- (void)refreshView{
    UITableViewCell *cell;
    UISwitch *switchView;
    NSIndexPath *indexPath;

    indexPath = [NSIndexPath indexPathForRow:0 inSection:1];
    cell = [thisTableView cellForRowAtIndexPath:indexPath];
    switchView = (UISwitch *)[cell viewWithTag:kSwitchTag];
    switchView.on = ([SharedClass sharedSharedClass].tempVar == 1) ? YES : NO;  

    NSString *baseString = @"%u %@.";
    NSString *onString = (switchView.on) ? @"IS on" : @"IS NOT on";
    NSString *messageString = [[NSString alloc] initWithFormat:baseString, [SharedClass sharedSharedClass].tempVar, onString];

    // TEMP DEBUG ALERTVIEW

UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"INDICATOR Row Selected"                                   message:messageString                                                  delegate:nil
cancelButtonTitle:@"Thanks"                                 otherButtonTitles:nil];

[alert show];
[alert release];
[messageString release];

[self.thisTableView reloadData];

}

Чтобы ответить на вопрос о ячейке ... Я не "передаю" ячейку методу, я устанавливаю indexPath и создаю указатель на ячейку, чтобы у меня был доступ к элементу управления переключателем в ячейке , Так что нет, я не думаю, что это будет равно нулю. Я думаю, что ячейка и tableView существуют, так как я не пытаюсь сделать указатель на ячейку, пока не появятся viewWill или viewDid

1 Ответ

0 голосов
/ 03 августа 2009

Вы уверены, что ячейка, переданная этому методу, равна нулю? Это объясняет, почему значение выключено, после того как вы установите его на ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...