Мое приложение представляет собой приложение tabBar. На первой вкладке есть табличное представление с некоторыми данными; если пользователь дотронется до строки, он увидит некоторую информацию и сможет сохранить эту информацию в «избранном».
во второй вкладке есть еще одно табличное представление с данными, сохраненными пользователями как «избранные» в первой вкладке.
Итак ... когда пользователь сохраняет сохранить в качестве избранных некоторые данные, это мой код:
-(IBAction)save{
NSString *saved = [NSString stringWithFormat:@"hello %@", my_variable]; //this is just an example :D
[my_array addObject:saved];
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[[NSUserDefaults standarddefaults] setObject:my_array forKey:@"my_array"];
[defaults synchronize];
}
Хорошо, это работает!
В чем проблема?
Во второй вкладке я хочу показать табличное представление, только если в my_array есть данные: если нет, я хочу показать UIView.
Итак, в "myviewController_secondTab.m" у меня есть это:
-(void)viewWillAppear:(BOOL)animated {
my_array = [[NSUserDefaults standardUserDefaults] objectForKey:@"my_array"];
[self.view addSubview:empty_data_view]; //this is the view when myarray is empty
if ([my_array count] <1){
CGRect viewFrame = CGRectMake(0.0f, 0.0f, 320.0f, 367.0f);
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationBeginsFromCurrentState:YES];
[UIView setAnimationDuration:0.0];
[empty_data_view setFrame:viewFrame];
[UIView commitAnimations];
} else {
CGRect viewFrame = CGRectMake(0.0f, 361.0f, 320.0f, 367.0f);
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationBeginsFromCurrentState:YES];
[UIView setAnimationDuration:0.0];
[empty_data_view setFrame:viewFrame];
[UIView commitAnimations];
[MY_TABLE_VIEW reloadData];
}
}
Хорошо, в чем проблема?
Это «reloadData» не работает!
Например: данные не сохраняются, пользователь открывает вторую вкладку и видит empty_data_view. Затем он переходит на первую вкладку и сохраняет некоторые данные.
Затем, если он вернется во вторую вкладку, empty_data_view исчезнет (потому что [my_array count] не <1), но таблица пуста! Нет данных!
Если я закрою приложение (даже из панели многозадачности) и снова открою, все в порядке, все работает отлично! Я вижу свои данные (и если я сохраняю больше данных, представление таблицы корректно перезагружает данные каждый раз). </p>
Знаете почему?
РЕДАКТИРОВАТЬ: РЕШЕНО!
я загружал другие массивы (во втором табличном представлении) в viewdidLoad ... теперь я загружаю все массивы в viewWillAppear, и это работает!