2011-03-17 66 views
0

我的應用程序是一個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中的所有數組,並且它的工作原理!

+0

我想,你已經錯過了你的UITableView添加到查看 你在哪裏有像[self.view addSubview:MY_TABLE_VIEW]; – Jhaliya 2011-03-17 17:10:58

+0

不,不,我的桌面視圖在IB連接,沒關係!但事實上,當我保存一些數據時,我看到了我的tableview,但我看到它是空的(直到我關閉並重新打開該應用程序) – JAA 2011-03-17 17:14:56

回答

0

我無法找到你的邏輯中的任何問題。但爲什麼你不以不同的方式嘗試它。項目應用程序委託可以使用[UIApplication sharedApplication] .delgate將值設置爲一個數組並存儲在第二個選項卡中。因爲你會從兩個Tabs訪問同一個對象,所以在加載時不會有任何問題。

相關問題