Я пытаюсь заставить UITableView
зависеть от настроек в приложении. В зависимости от значения параметра, UITableView
(в RootViewController) будет отображать соответствующее количество ячеек в таблице. Я проверяю настройку (которая устанавливается другим ViewController и определяю ячейки, которые должны отображаться в методе viewWillAppear
RootViewController. Вот код:
- (void)viewWillAppear:(BOOL)animated
{
if (menuList != nil) {
[menuList dealloc];
//[self.tableView performSelectorOnMainThread:@selector(reloadData) withObject:nil waitUntilDone:NO];
}
coreViewController.RootView = self;
//[self.tableView reloadData];
[[UIApplication sharedApplication] delegate];
self.title = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleName"];
MyAppAppDelegate *appDelegate = (MyAppAppDelegate *)[[UIApplication sharedApplication] delegate];
menuList = [[NSMutableArray alloc] init];
[menuList addObject:[NSMutableDictionary dictionaryWithObjectsAndKeys:NSLocalizedString(@"App Setup", @"App Setup"),kSelectKey, NSLocalizedString(@"Setup App Details",@"App Setup2"),kDescriptKey, nil, kControllerKey,nil]];
[menuList addObject:[NSMutableDictionary dictionaryWithObjectsAndKeys:NSLocalizedString(@"Selection 1", @"Selection 1"),kSelectKey, NSLocalizedString(@"Selection 1",@"Selection 1"),kDescriptKey, nil, kControllerKey,nil]];
[menuList addObject:[NSMutableDictionary dictionaryWithObjectsAndKeys:NSLocalizedString(@"Selection 2", @"Selection 2"),kSelectKey, NSLocalizedString(@"Selection 2",@"Selection 2"),kDescriptKey, nil, kControllerKey,nil]];
if (appDelegate.Level == 1) {
[menuList addObject:[NSMutableDictionary dictionaryWithObjectsAndKeys:NSLocalizedString(@"Selection 3", @"Selection 3"),kSelectKey, NSLocalizedString(@"Selection 3",@"Selection 3"),kDescriptKey, nil, kControllerKey,nil]];
}
if (appDelegate.Level == 2) {
[menuList addObject:[NSMutableDictionary dictionaryWithObjectsAndKeys:NSLocalizedString(@"Selection 3", @"Selection 3"),kSelectKey, NSLocalizedString(@"Selection 3",@"Selection 3"),kDescriptKey, nil, kControllerKey,nil]];
[menuList addObject:[NSMutableDictionary dictionaryWithObjectsAndKeys:NSLocalizedString(@"Selection 4", @"Selection 4"),kSelectKey, NSLocalizedString(@"Selection 4",@"Selection 4"),kDescriptKey, nil, kControllerKey,nil]];
}
if (appDelegate.Level == 3) {
[menuList addObject:[NSMutableDictionary dictionaryWithObjectsAndKeys:NSLocalizedString(@"Selection 3", @"Selection 3"),kSelectKey, NSLocalizedString(@"Selection 3",@"Selection 3"),kDescriptKey, nil, kControllerKey,nil]];
[menuList addObject:[NSMutableDictionary dictionaryWithObjectsAndKeys:NSLocalizedString(@"Selection 4", @"Selection 4"),kSelectKey, NSLocalizedString(@"Selection 4",@"Selection 4"),kDescriptKey, nil, kControllerKey,nil]];
[menuList addObject:[NSMutableDictionary dictionaryWithObjectsAndKeys:NSLocalizedString(@"Selection 5", @"Selection 5"),kSelectKey, NSLocalizedString(@"Selection 5",@"Selection 5"),kDescriptKey, nil, kControllerKey,nil]];
}
//add the final selection so that it is always last in the list
[menuList addObject:[NSMutableDictionary dictionaryWithObjectsAndKeys:NSLocalizedString(@"Final Selection", @"Final Selection"),kSelectKey, NSLocalizedString(@"Final Selection",@"Final Selection"),kDescriptKey, nil, kControllerKey,nil]];
//[self.tableView reloadRowsAtIndexPaths:menuList withRowAnimation:true];
//[appDelegate.lastView replaceObjectAtIndex:0 withObject:[NSNumber numberWithInteger:-1]];
//[appDelegate.lastView replaceObjectAtIndex:1 withObject:[NSNumber numberWithInteger:-1]];
[self.tableView performSelectorOnMainThread:@selector(reloadData) withObject:nil waitUntilDone:NO];
//[super viewWillAppear:animated];
}
Как видите, я пробовал несколько разных вещей, чтобы перерисовать таблицу (я оставил комментированные). Когда код выполняется, таблица воссоздается, но ячейки для выбора 3 не обновляются. (Я хочу, чтобы в ячейках отображались только доступные варианты выбора в зависимости от уровня, выбранного в приложении)
примечание: Я пытался использовать [self.tableView reloadData];
, и он не перезагружает третью ячейку в таблице. Я забыл включить эту информацию. Что происходит при начальной загрузке таблицы выглядит так:
Settings >
Selection 1>
Selection 2>
Final Selection>
Когда я меняю уровень, таблица выглядит так:
Settings >
Selection 1>
Selection 2>
Final Selection>
Selection 4>
Final Selection>
Это происходит независимо от того, как я перезагружаю таблицу (даже используя reloadData).
Я уверен, что упускаю что-то очень очевидное, и я ценю любую помощь, оказанную.