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