0

NSMutableArray来自NSCachesDirectory,我正在每个 VIEW 中重新创建/重新加载数组。我正在显示/预览它UIScrollView,可以在 VIEW_A 中删除它。在另一个ViewControllerVIEW_B 中,我有另一个预览,用于另一个目的。

我需要的是当我删除 VIEW_A 中的图像时,我将能够在 VIEW_B 中确定已删除的图像或索引。因为我在 VIEW_B 中使用了他们的索引。我怎么能做到。我正在考虑将其全部保存,NSUserDefaults但如何保存。

删除方法:

    [button removeFromSuperview];

    [_buttons removeObjectAtIndex:button.tag];
    [_images removeObjectAtIndex:button.tag];

    NSFileManager *fileManager = [NSFileManager defaultManager];
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory,NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];
    NSString *fullPath = [documentsDirectory stringByAppendingPathComponent:[NSString stringWithFormat:@"oneSlotImages%u.png", button.tag]];           
    [fileManager removeItemAtPath: fullPath error:NULL];

我只想知道/确定从其他视图中删除的索引。

4

2 回答 2

1

我不确定我是否真的理解你的问题,但这是我的回应:

如果您需要在某些更改后更新某个对象(例如您的数组)。您应该使用模式观察者。您可以使用 NSNotificationCenter(在基础库中)免费获得一个,但我不鼓励它。您可以使用 kvo/kvc,但它不像在模式观察器中那样干净。

顺便说一句,您应该只使用一个数组,如果您需要对其进行更改,请使用特定的控制器来完成。(不像你的 UIViewA/B 那样来自客户端)

在wiki上如何使用它(在java中,但骨架是相同的): http ://en.wikipedia.org/wiki/Observer_pattern

顺便说一句,NSUserDefault 应该只用于存储用户偏好,而不是一些应用程序逻辑值。

于 2012-10-10T07:30:39.627 回答
0

最好的选择是使用委托方法。

在 VIEW_B 中设置委托协议,并在删除方法中调用类似...

[self.delegate didDeleteImageAtIndex:button.tag];

然后在 VIEW_A 中,在您推送 VIEW_B 之前将其设置为委托。

然后在 VIEW_A 有方法...

- (void)didDeleteImageAtIndex:(int)index
{
    //delete image from VIEW_A's array
}
于 2012-10-10T07:32:28.400 回答