У меня есть страница, которая проверяет, есть ли список сотрудников в связке, и если он есть, отображает их в виде таблицы. Но если в пакете нет списка, он выдает модальный контроллер вида. Для этого требуется, чтобы кто-то вошел в систему, авторизация была выполнена, а затем данные загружены.
ModalView настроен как делегат первой страницы. Я могу нормально вызвать метод делегата и передать список, но когда ModalView отклоняется, таблица не перезагружает представление таблицы с данными. Если я снова запускаю проект, он мгновенно загружает список в табличном представлении.
Вот метод на ViewDidLoad первой страницы
[self checkLastLoginDate];
[self loadDataIntoArray];
if (currentData && dataLoadedIntoArray) {
NSLog(@"sweet the data is current");
[self createIndexedArray];
}
else{
NSLog(@"Data not loaded and not current");
//push login view
///if ipad do this
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
{
//the above code was working fine. I am just testing pushing a dynamic xib
LoginViewControlleriPad *loginControlleriPad = [[LoginViewControlleriPad alloc] initWithNibName:@"LoginViewControlleripad" bundle:nil];
loginControlleriPad.modalPresentationStyle = UIModalPresentationFormSheet;
loginControlleriPad.delegate = self;
[self presentModalViewController:loginControlleriPad animated:YES];
[self createIndexedArray];
[loginControlleriPad dismissModalViewControllerAnimated:NO];
[self.tableView reloadData];
}
Первые два метода проверяют, чтобы убедиться, что данные в пакете существуют и что последняя дата входа в систему - в течение 15 дней.
если это так, я создаю IndexedArray, и он хорошо отображается.
Если данных нет в комплекте или дата устарела, я проверяю устройство и использую модальное представление. Делегаты установлены, и появляется ModalView.
В ModalView я использую запрос syncronus и asyncronus для обращения к серверу за необходимой информацией. Затем я создаю список и возвращаю его на первую страницу.
Как только соединение установлено и мы немного поработали над списком, мы сохраняем его в комплекте.
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *path = [documentsDirectory stringByAppendingPathComponent:kEMPLOYEE_PLIST];
/////write to file/////
[cleanResults writeToFile:path atomically:YES];
employeeList = [[NSMutableArray alloc ]initWithContentsOfFile:path];
if (employeeList != nil)
{
[delegate passUserInfo:employeeList];
//cant get login view to dismiss
//[self dismissModalViewControllerAnimated:YES];
}
Как только я получаю список, я записываю его в файл, а затем снова читаю. Если в списке есть информация, я вызываю метод делегата.
UPDATE
Вот метод Дельгейта
- (void)passUserInfo: (NSMutableArray *)employeeDataArray
{
employeeData = [[NSMutableArray alloc] initWithArray:employeeDataArray];
[self.tableView reloadData];
/////FIX////////
[createIndexedArray];
}
Как только это называется, ничего не происходит. Я попытался отклонить модальное представление, которое работает, но затем первая страница не обновляется, и мое приложение теряется в забвении. Я просто запутался, когда это происходит и как я могу обновить таблицу на первой странице.
Есть ли шаг, который мне не хватает? Я попытался отследить это и потерять его после этого шага.