2013-09-29 70 views
0

我已經搜查了很多,還是沒找到一個答案......NSMutableArray的持續性,同時切換視圖控制器

我在Xcode 5.0工作的一個iPhone應用程序(上大學)使用故事板。

我有一個視圖控制器與表視圖和一切工作正常(數據源,委託...)。項目存儲在一個數組中(稱之爲「array1」)。我有一個ADD按鈕,它將列出我想添加(如果選中)array1的項目。我將選中的項存儲在另一個數組中(「array2」)。事情是,當我將array2傳遞給前一個視圖控制器時,我失去了array1中的所有數據(它變爲零)。 我使用從數組2到VC傳遞數據的代碼是:

-(void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { 
    if ([segue.identifier isEqualToString:@"updateFavoritesSegue"]) { 
    FavoritesViewController *targetVC = (FavoritesViewController*) segue.destinationViewController; 
    [targetVC updateFavorites:[self newFavoritesArray]]; 
    } 
} 

的updateFavorites方法被實現如下。

-(void) updateFavorites:(NSArray *)newFavorites { 
    [self.favorites addObjectsFromArray:newFavorites]; 
    [self.favoritesTableView reloadData]; 
} 

非常感謝您的幫助。

+0

是'updateFavoritesSegue'推賽格瑞或開卷SEGUE? – Wain

+1

您可能試圖將「繼續」推送到FavoritesViewController。這樣你就可以創建另一個與第一個無關的FavoritesViewController實例。我的答案[數據消失時,視圖之間切換控制器](http://stackoverflow.com/questions/18992604/data-disappears-when-switching-between-view-controllers/18993225#18993225)可能讓你知道發生了什麼。 – Jarig

+0

@Jarig這正是我正在做的。我會嘗試你的解決方案!謝謝。 –

回答

2

爲什麼你不使用一些處理程序?

secondVC.h

@property (nonatomic, copy) void (^didFinishPickingItemsHandler)(NSArray *items); 
從firstVC

則:

- (void)showSecondScreen { 
     MYSecondVC *secondVC = /* initialisation code here */ 
     __weak MyFirstVC *self_ = self; 
     secondVC.didFinishPickingItemsHandler = ^(NSArray *items) { 
      /* update you data here with your array1 and received picked items */ 
      [self.navigationController popViewControllerAnimated:YES]; 
     }; 
     [self.navigationController pushViewController:secondVC animated:YES]; 
    } 
+0

我必須在處理程序上做一些閱讀,但謝謝你的答案! –

+0

如果你想做一些關於這個話題的閱讀,我可以推薦蘋果的[一個簡短的實用指南](https://developer.apple.com/library/ios/featuredarticles/Short_Practical_Guide_Blocks/)。塊是一個在系統框架API中經常使用的概念,所以值得了解。 – Jarig

相關問題