2013-09-29 25 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

相关问题