Какао Touch лучший способ вызвать метод при переключении видов - PullRequest
1 голос
/ 02 апреля 2011

У меня есть несколько кнопок, которые устанавливают некоторые переменные для другого класса (через extern).Дело в том, что эти переменные меняют максимальное значение ползунка и изображение UIImage.

Я делаю это с помощью метода viewDidLoad, проблема в том, что представление загружается работает только при первой загрузке этого контроллера.*

Вот код того, как я загружаю контроллер на Home.m:

- (void)openPagesFrom:(int)pageStart to:(int)pageEnd name:(NSString *)title{

    […]

    [UIView beginAnimations:nil context:NULL];
    [UIView setAnimationBeginsFromCurrentState:YES];
    [UIView setAnimationTransition: UIViewAnimationTransitionFlipFromLeft forView:self.view cache:YES];
    [UIView setAnimationDuration:0.7];

    if(self.pagesController == nil){
        Pages *pagesControllerCopy = [[Pages alloc] initWithNibName:@"Pages" bundle:nil];
        self.pagesController = pagesControllerCopy;
        [pagesControllerCopy release];
    }
    [self.view insertSubview:pagesController.view atIndex:1];

    [UIView commitAnimations];  
}

Я удаляю подобное представление на Pages.m:

- (IBAction)goHome:(id)sender{
    // animate transition
    [UIView beginAnimations:nil context:NULL];
    [UIView setAnimationBeginsFromCurrentState:YES];
    [UIView setAnimationTransition: UIViewAnimationTransitionFlipFromLeft forView:self.view.superview cache:YES];
    [UIView setAnimationDuration:0.7];

    [self viewWillAppear:YES];
    [super viewWillAppear:YES];

    // ****************************
    [self.view removeFromSuperview];
    // ****************************

    [self viewDidDisappear:YES];
    [super viewDidAppear:YES];

    [UIView commitAnimations];
}

В этом же файле метод viewDidLoad выглядит следующим образом:

 - (void)viewDidLoad {
    [super viewDidLoad];

    [myScrollView setContentSize:CGSizeMake(1024, 1420)];

    NSString *initPage = [NSString stringWithFormat:@"P%d.jpg",currentPage];
    imagePlaceholder.image = [UIImage imageNamed:initPage];

    // set new values for Slider 
    pageSlider.minimumValue = currentPage;
    pageSlider.maximumValue = totalBookPages;
}

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

Спасибо.

1 Ответ

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

Попробуйте вместо этого использовать метод -(void)viewWillAppear:(BOOL)animated!

Этот метод / должен / работать для вас!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...