iphone: переключение видов, как книжка с картинками, проблема с removeFromSuperView

Правильно, я знаю, как сделать эффект книги с картинками, но я изо всех сил пытаюсь удалить вид

Итак, на странице 1 я добавляю просмотр второй страницы через addSubview (через свайп). Я также увеличиваю счетчик, чтобы знать, на какой странице я нахожусь.

Итак, как мне вернуться на страницу 1? Видите ли, я думал, что это будет self.view removeFromSuperview, но он вылетает, когда вы пытаетесь вернуться на страницу 2.

Код ниже

- (void)handleSwipeFrom:(UISwipeGestureRecognizer *)recognizer {

    if (recognizer.direction == UISwipeGestureRecognizerDirectionLeft) {
  //NSLog(@"swipe right to left");

  UniversalAppAppDelegate *appDelegate = (UniversalAppAppDelegate *)[[UIApplication sharedApplication] delegate];
  PictureBookViewController *viewController2 =(PictureBookViewController *) [appDelegate getViewControllerForViewID:@"81"];

  [UIView beginAnimations:Nil context:nil];
        [UIView setAnimationDuration:0.6];
        [UIView setAnimationTransition:UIViewAnimationTransitionCurlUp forView:self.view.superview cache:YES];
  self.viewController = viewController2;
  self.viewController.pageNo = self.pageNo + 1;

        [self.view addSubview:self.viewController.view];
        [UIView commitAnimations];
  [viewController2 release];

 } else {

  //NSLog(@"swipe left to right");
  NSLog([NSString stringWithFormat:@"%d", self.pageNo]);
  if (self.pageNo > 0) {

   [UIView beginAnimations:Nil context:nil];
   [UIView setAnimationDuration:0.6];
   [UIView setAnimationTransition:UIViewAnimationTransitionCurlDown forView:self.view.superview cache:YES];

   //self.viewController = viewController2;
   //self.viewController.pageNo = self.pageNo - 1;
   //[self.view addSubview:self.viewController.view];

   [self.view removeFromSuperview];
   //[self.view addSubview:self.viewController.view];
   [UIView commitAnimations];

  }
    }
}

Обновлять:

Каждое представление имеет свои собственные контроллеры представления.


person Burf2000    schedule 23.09.2010    source источник
comment
не могли бы вы правильно отформатировать код?   -  person Alastair Stuart    schedule 23.09.2010


Ответы (2)


Вы хотите удалить представление вашего viewController, а не представление контейнера.

[self.viewController.view removeFromSuperview];
person Alastair Stuart    schedule 23.09.2010
comment
Правильно, я внес ваши изменения, и теперь он сохраняет страницу 2 и удаляет страницу 1. Итак, если на странице 1 был розовый фон, а на странице 2 был красный фон, розовый фон не возвращается, когда вы проводите назад, красный снова появляется - person Burf2000; 23.09.2010

Кажется, это работает и не падает? Теперь я убедился, что это правильно. Мне просто нужен способ удалить последнее добавленное подвид. Мой первый взгляд не супервид

- (void)handleSwipeFrom:(UISwipeGestureRecognizer *)recognizer {

    if (recognizer.direction == UISwipeGestureRecognizerDirectionLeft) {
        //NSLog(@"swipe right to left");

        UniversalAppAppDelegate *appDelegate = (UniversalAppAppDelegate *)[[UIApplication sharedApplication] delegate];
        PictureBookViewController *viewController2 =(PictureBookViewController *) [appDelegate getViewControllerForViewID:@"82"];

        [UIView beginAnimations:Nil context:nil];
        [UIView setAnimationDuration:0.6];
        [UIView setAnimationTransition:UIViewAnimationTransitionCurlUp forView:self.view.superview cache:YES];
        self.viewController = viewController2;
        self.viewController.pageNo = self.pageNo + 1;
        self.viewController.lastViewController = self;
        [self.view addSubview:self.viewController.view];
        [UIView commitAnimations];
        [viewController2 release];

    } else {

        //NSLog(@"swipe left to right");
        NSLog([NSString stringWithFormat:@"%d", self.pageNo]);
        if (self.pageNo > 0) {

            [UIView beginAnimations:Nil context:nil];
            [UIView setAnimationDuration:0.6];
            [UIView setAnimationTransition:UIViewAnimationTransitionCurlDown forView:self.view.superview cache:YES];
            self.pageNo --;
            self.view =  self.viewController.view;
            [self.view  removeFromSuperview ];
            self.view = self.lastViewController.view;

            [UIView commitAnimations];

        }
    }
}
person Burf2000    schedule 23.09.2010