0

NSMutableArrayNSCachesDirectory、すべてのビューで配列を再作成/再ロードしています。UIScrollViewVIEW_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(foundation lib内)で無料のものを入手できますが、お勧めしません。kvo / kvcを使用できますが、パターンオブザーバーで使用する場合ほどクリーンではありません。

ちなみに、使用するアレイは1つだけで、変更が必要な場合は、特定のコントローラーを使用して変更してください。(UIViewA / Bのようにクライアント側からではありません)

ここウィキでそれを使用する方法(Javaで、しかしスケルトンは同じです):http: //en.wikipedia.org/wiki/Observer_pattern

ちなみに、NSUserDefaultは、一部のアプリロジック値ではなく、ユーザー設定を保存するためにのみ使用する必要があります。

于 2012-10-10T07:30:39.627 に答える
0

最良のオプションは、デリゲートメソッドを使用することです。

VIEW_Bでデリゲートプロトコルを設定し、deleteメソッドで次のようなものを呼び出します...

[self.delegate didDeleteImageAtIndex:button.tag];

次に、VIEW_Bをプッシュする前に、VIEW_Aでそれをデリゲートとして設定します。

次に、VIEW_Aにメソッドがあります...

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