iOS: перемещение объектов в NSMutableArray - PullRequest
0 голосов
/ 02 апреля 2012

У меня есть приложение, которое ведет себя как фотогалерея.Они выбирают изображение оттуда с камеры, и изображение отображается в UIImageView.У меня в общей сложности 9 просмотров изображений.Теперь я пытаюсь добавить возможность нажать кнопку редактирования и разрешить пользователю удалять фотографии.Я выполнил это, поместив скрытую кнопку UIB над каждым изображением, и при нажатии кнопки появляется UIAlertView с вопросом, хотят ли они удалить это изображение.После того, как они щелкнули «Да» в UIAlertView, я бы хотел, чтобы этот конкретный UIImageView прекратил отображать изображение и переместил каждое отображаемое изображение на 1 строку влево, чтобы в галерее не было пустого пространства.

Это то место, где мне становится сложно, я все еще плохо знаком с Objective-C и понятия не имею, как это сделать.Я знаю, что мне, вероятно, следует вызывать moveRowAtIndexPath и toIndexPath, но я не уверен, следует ли мне делать это в viewDidLoad, viewWillAppear, или мне просто создать свой собственный метод для этого?Вот пример того, с чем я работаю, что может иметь или не иметь отношения:

- (void)applicationDidEnterBackground:(UIApplication*)application {
    NSLog(@"Image on didenterbackground: %@", imageView);
    NSMutableArray* array = [NSMutableArray arrayWithObject:[NSData dataWithData:UIImagePNGRepresentation(imageView.image)]];

    [array addObject:[NSData dataWithData:UIImagePNGRepresentation(imageView2.image)]];
     [array addObject:[NSData dataWithData:UIImagePNGRepresentation(imageView3.image)]];
      [array addObject:[NSData dataWithData:UIImagePNGRepresentation(imageView4.image)]];

            [self.user setObject:array forKey:@"images"];
    [user synchronize];

            }

- (void)viewDidLoad
    {
        self.user = [NSUserDefaults standardUserDefaults];
        NSLog(@"It is %@", self.user);
        NSMutableArray* array = [[self.user objectForKey:@"images"]mutableCopy];
        imageView.image = [[UIImage alloc] initWithData:[array objectAtIndex:0]];
        imageView2.image = [[UIImage alloc] initWithData:[array objectAtIndex:1]];
        imageView3.image = [[UIImage alloc] initWithData:[array objectAtIndex:2]];
        imageView4.image = [[UIImage alloc] initWithData:[array objectAtIndex:3]];



        UIApplication *app = [UIApplication sharedApplication];
        [[NSNotificationCenter defaultCenter] addObserver:self
                                                 selector:@selector(applicationDidEnterBackground:)
                                                     name:UIApplicationDidEnterBackgroundNotification
                                                   object:app];

        backToGalleryButton.hidden = YES;
        tapToDeleteLabel.hidden = YES;
        deleteButton1.hidden = YES;
        [super viewDidLoad];

    }

Любая помощь или совет по этому вопросу высоко ценится, спасибо!

1 Ответ

2 голосов
/ 02 апреля 2012

Почему вы просто не удаляете объект из массива, если это функция удаления?removeObject или removeObjectAtIndex прекрасно справятся с этой задачей.Если вы используете табличное представление, затем вызовите reloadData для него.

...