Как вернуться из подпредставления в предыдущее представление - PullRequest
0 голосов
/ 18 июля 2011

Я работаю над приложением, которое состоит из разных модулей.Через начальную страницу можно перейти к этим различным модулям.

Один из них - это своего рода средство выбора изображений, представление которого отображает несколько миниатюр изображений в виде кнопок.

После нажатия на этотминиатюра, целое изображение, которое также является кнопкой, отображается в подпредставлении.

Чтобы вернуться в режим просмотра миниатюр, можно просто снова щелкнуть изображение (кнопка).

Проблема в том, что я всегда возвращаюсь на начальную страницу, где я могу выбирать между различными модулями.

Здесь вы найдете реализацию в моем ViewController:

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
int counter;
int x = 30;
int y = 10;

for (counter = 1; counter < 9 ; counter++) {

UIButton *imageButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];

CGRect rect = CGRectMake(x, y, 307, 230);
imageButton.frame = rect;

[imageButton addTarget:self action:@selector(showImage:) forControlEvents:UIControlEventTouchUpInside];
[imageButton setImage:[UIImage imageNamed:[NSString stringWithFormat:@"tn%i.jpg",counter]] forState:UIControlStateNormal];
    imageButton.tag = counter;
[self.view addSubview:imageButton];
    x = x + 327;
    if (counter == 3){
        x = 30;
        y = 260;
    }
    if (counter ==6){
        x = 30;
        y = 510;
    }
}
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
    // Custom initialization
}
return self;
}

-(void)showImage:(id)sender
{

int imageCounter = [sender tag];
UIButton *imageLarge = [UIButton buttonWithType:UIButtonTypeRoundedRect];

CGRect largeRect = CGRectMake(0,0, 1024, 768);
imageLarge.frame = largeRect;

[imageLarge addTarget:self action:@selector(back:) forControlEvents:UIControlEventTouchUpInside];
[imageLarge setImage:[UIImage imageNamed:[NSString stringWithFormat:@"%i.jpg",imageCounter]] forState:UIControlStateNormal];
imageLarge.tag = imageCounter;
[self.view addSubview:imageLarge];

}

-(void)back:(id)sender
{
[UIView beginAnimations:@"flipview" context:nil];
[UIView setAnimationDuration:1];
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft forView:self.view.superview cache:YES];

[self.view setHidden:YES];

[UIView commitAnimations];  

}

Чтоя здесь скучаю?

1 Ответ

1 голос
/ 18 июля 2011

-back:, который, кажется, вызывается, когда вы хотите закрыть отображаемое изображение, устанавливает self.view для скрытия.Из вашего кода self.view - это суперпредставление изображения, которое вы отображаете.Таким образом, вы скрываете весь вид, оставляя видимым только предыдущий вид меню.

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

imageView.alpha = 0.0; //Alpha animates, hidden doesn't

Затем при необходимости обязательно удалите imageView из его суперпредставления.

...