我的應用程序是一個tabBar應用程序。在第一個選項卡中有一個包含一些數據的表格視圖;如果用戶觸摸一排,他會看到一些信息,他可以將這些信息保存爲「最喜歡的」。 在第二個選項卡中還有另一個tableview,其中的數據被第一個選項卡中的用戶保存爲「最喜歡的」。保存一個標籤中的數據,並在另一個標籤中重新載入數據
所以......當用戶保存保存爲最喜愛的一些數據,這是我的代碼:
-(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」中有數據時顯示tableview:如果沒有,我想顯示一個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計數]不是< 1),但tableview是空的!沒有數據! 如果我關閉應用程序(即使從多任務欄)並重新打開,沒關係,一切正常!我看到我的數據(如果我保存更多的數據,tableview每次正確地重新加載數據)。
你知道爲什麼嗎?
編輯:求助! 我正在加載viewdidLoad中的其他數組(在第二個tableview中)...現在我加載viewWillAppear中的所有數組,並且它的工作原理!
我想,你已經錯過了你的UITableView添加到查看 你在哪裏有像[self.view addSubview:MY_TABLE_VIEW]; – Jhaliya 2011-03-17 17:10:58
不,不,我的桌面視圖在IB連接,沒關係!但事實上,當我保存一些數據時,我看到了我的tableview,但我看到它是空的(直到我關閉並重新打開該應用程序) – JAA 2011-03-17 17:14:56