Я прочитал некоторые другие посты, но не нашел правильного решения, которое, кажется, работает в моем случае.У меня есть класс UITableViewController, который создается из основного делегата приложения, и он управляет другими представлениями, которые помещаются в экземпляр UINavigationController, созданный из делегата приложения.
На панели UINavigationToolBar у меня есть кнопка UISegmentedControl, которая разделена на две части: заводские и пользовательские нагрузки.У меня есть метод действия, прикрепленный к SegmentedControl, чтобы определить, когда кнопка нажата, и этот метод находится внутри класса UIViewController.Моя цель - перезагрузить представление с содержимым нового словаря, созданного из файла plist в комплекте приложений.У меня загружен словарь, и отображаемые ключи настроены в соответствующих форматах данных, но при попытке перезагрузить UITableView происходит сбой.
Это последний код, который я пытался заставить работать в моем методе действия, но он по-прежнему не работает должным образом.
- (void) action:(id)sender {
UISegmentedControl *segment = (UISegmentedControl *) sender;
if ([segment selectedSegmentIndex] == 1)
{
NSLog(@"User Load Selected");
NSString *userLoadFilePath = [[NSBundle mainBundle] pathForResource:@"UserLoads" ofType:@"plist"];
NSDictionary *userLoadDictionary = [[NSDictionary alloc] initWithContentsOfFile:userLoadFilePath];
NSArray *allKeys = [userLoadDictionary allKeys];
keys = allKeys;
dictionary = userLoadDictionary;
[[self tableView] reloadData];
}
else if ([segment selectedSegmentIndex] == 0)
{
NSLog(@"Factory Load Selected");
NSString *factoryLoadFilePath = [[NSBundle mainBundle] pathForResource:@"AlliantPowder" ofType:@"plist"];
NSDictionary *factoryLoadDictionary = [[NSDictionary alloc] initWithContentsOfFile:factoryLoadFilePath];
NSArray *allKeys = [factoryLoadDictionary allKeys];
keys = allKeys;
[[self tableView] reloadData];
}
}
Я звоню [[self tableView] reloadData]
впопытаться получить фактическую таблицу, содержащуюся в UIViewController, чтобы попытаться перезагрузить таблицу, но безуспешно.Любая помощь приветствуется, и если вам нужно больше кода, пожалуйста, спросите.Спасибо!
Андрей
------- Редактировать ----------- Вот новый код в отношении идей Чипа.Проблема все еще не решена, и приложение все еще падает.
- (void) action:(id)sender {
// Create an instance of UISegmentedControl and set it as the sending event.
UISegmentedControl *segment = (UISegmentedControl *) sender;
// Detect which button was pressed and load a new dictionary appropriately
// Checking if userLoads was selected
if ([segment selectedSegmentIndex] == 1)
{
NSLog(@"User Load Selected");
keys = userKeys;
[[self tableView] reloadData];
}
// Checking if factoryLoads was selected
else if ([segment selectedSegmentIndex] == 0)
{
NSLog(@"Factory Load Selected");
keys = [dictionary allKeys];
[[self tableView] reloadData];
}
[segment release];
}