Экран входа в систему + просмотр таблицы в контроллере вкладок = Ничего не появляется после первоначального входа в систему - PullRequest
0 голосов
/ 07 апреля 2011

Это немного сложно ~

Получил страницу входа в систему, которая проверяет имя пользователя / пароль с внешнего сервера. Сервер возвращает идентификатор пользователя, который затем используется в моем приложении для поиска подходящего файла plist. Если его еще нет, предполагается создать новый список для этого пользователя с примерами данных. Это все работает, но ничего не появляется, если я не завершу, а затем перезапустите приложение.

Мне кажется, проблема в том, что просмотр таблицы загружается одновременно со страницей модального входа.

Ниже приведен код с моей страницы входа:

-(void)connectionDidFinishLoading:(NSURLConnection *)connection{
[fIndicator stopAnimating];
    //convert data from server to a string
NSString *xmlReturn = [[NSString alloc] initWithData:xmlData encoding:NSUTF8StringEncoding];
    //notify user if username/pass failed
if ([xmlReturn isEqualToString:@"0"] ||[xmlReturn isEqualToString:@"No"] ) {
    UIAlertView *alert =[[UIAlertView alloc]initWithTitle:@"Login Fail" message:nil delegate:nil cancelButtonTitle:@"Retry" otherButtonTitles:nil];
    [alert show];
    [alert release];
}
    //if server authenticates username/pass
else {

    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
            //set user ID from server into Defaults for app use
    [defaults setObject:xmlReturn forKey:@"AppPref_UI"];
    [defaults synchronize];
            //this is where I think the tableview needs to be told to reload
            //but no idea how to reference that view controller from
            //this modal view controller
    [??? reloadData];
    [self dismissModalViewControllerAnimated:YES];
}
[xmlReturn release];

}

1 Ответ

0 голосов
/ 07 апреля 2011

Вы бы использовали шаблон проектирования делегата. Диалог входа в систему сообщит своему делегату, когда это будет сделано.

@property (nonatomic, assign) id <YourProtocol> delegate;

и

if ([self.delegate respondsToSelector:@selector(loginCompleted:)]) {
    [self.delegate loginCompleted:self];
}

Вы устанавливаете делегата при создании контроллера представления входа в систему и представлении его пользователю.

...