iPhone Переключение просмотров _KILL! проблема - PullRequest
0 голосов
/ 30 октября 2009

У меня проблема с переключением между двумя представлениями с помощью nib-файлов! вот мой код. моя первая страница переходит на страницу 2! но на странице 2 я не могу вернуться на первую страницу! мое приложение выходит .. вот мой код:

со страницы 1 до 2:

    #import "HafezViewController.h"
#import "GhazaliateHafez.h"


-(IBAction)gh:(id)sender {
    HafezViewController *ghPage = [[HafezViewController alloc] initWithNibName: @"GhazaliateHafez" bundle:nil];
    [UIView beginAnimations:nil context:NULL];
    [UIView setAnimationDuration:1.3];
    [UIView setAnimationTransition:UIViewAnimationTransitionCurlDown forView:self.view cache:YES];
    [self.view addSubview:ghPage.view];
    [UIView commitAnimations];
}

^^^^^^^^^ этот код прекрасно работает! но со страницы 2 и обратно:

#import "GhazaliateHafez.h"
#import "HafezViewController.h"

@implementation GhazaliateHafez


-(IBAction)ghtoIndex:(id)sender {
    HafezViewController *back1 = [[HafezViewController alloc] initWithNibName:@"index" bundle:nil];
    [UIView beginAnimations:nil context:NULL];
    [UIView setAnimationDuration:1.5];
    [UIView setAnimationTransition:UIViewAnimationTransitionCurlUp forView:self.view cache:YES];
    [self.view addSubview:back1.view];
    [UIView commitAnimations];

}

после того, как я нажал кнопку "Назад", мое приложение перестало работать ... в чем моя проблема? спасибо

Ответы [ 2 ]

1 голос
/ 30 октября 2009

Вы добавляете view2 к view1, а затем добавляете view1 обратно к view2. Когда закончите с View2, простой вызов self.view.removeFromSuperview и представление 1 будут показаны снова.

На самом деле, глядя на это снова, может показаться, что вы захотите взглянуть на presentModalViewController, чтобы показать представление 2.

0 голосов
/ 30 октября 2009

Две мысли, которые могут помочь вам в пути:

Я думаю, что вы можете запустить это через инструменты. У тебя течет память? Вы распределяете представление по каждому клику, а затем кешируете его ... вы выпускаете их?

Было бы проще иметь два существующих представления отдельно от этого, например, в массиве, затем индексировать то, которое вы хотите сделать активным, и переносить его в цикл анимации выше, выпуская и скрывая другое? Не совсем уверен, как заставить другое представление исчезнуть по команде, так как выпуск управляется мусором ... но я знаю, что есть способ сделать это.

И это из предыдущего поста, который помог мне, когда я спрашивал, как немедленно удалить подпредставление:


myGroovySubview.hidden = YES; скрывает вид. Вы также можете попытаться удалить его из суперпредставления с помощью [myGroovySubview removeFromSuperview];

Если вы удалили его из суперпредставления, вызов освобождения должен автоматически удалить его из памяти, поскольку после этого вызова счетчик ссылок должен быть равен нулю.

...