切换视图控制器时NSMutableArray持久性

时间:2013-09-29 15:26:27

标签: ios objective-c segue

我搜索了很多但仍未找到答案......

我正在使用故事板在xcode 5.0中使用iphone App(大学)。

我有一个带有表视图的View Controller,一切正常(数据源,委托...)。项存储在一个数组中(称之为“array1”)。我有一个ADD按钮,它会显示我想要添加(如果选中)到array1的项目列表。我将检查的项目存储在另一个数组(“array2”)中。问题是,当我将array2传递给前一个视图控制器时,我丢失了array1中的所有数据(它变为零)。 我用来将数据从array2传递到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];
}

非常感谢你的帮助。

1 个答案:

答案 0 :(得分:2)

为什么不用一些处理程序?

secondVC.h

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

然后从第一个VC:

    - (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];
    }