Я работаю над обновлением моего приложения до версии 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