2011-04-01 54 views
1

我有幾個按鈕可以爲另一個類設置一些變量(通過extern)。事情是這個變量改變滑塊的最大值和UIImage的圖像。Cocoa觸摸切換視圖時觸發方法的最佳方式

我通過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,我顯然做得不對。也許有一個更簡單的解決方案。

謝謝。

回答

2

請嘗試使用-(void)viewWillAppear:(BOOL)animated方法!

該方法/應該/爲您工作!

+0

我之前嘗試過,但有些錯誤。你是對的。 [super viewWillAppear:YES];必須在那裏才能工作。另外,我必須在[super viewDidLoad]之前放置pageSlider.minimumValue和maximumValue,否則在第一次單擊按鈕時不會調用它。 viewDidLoad我仍然用來初始化一些東西。 – HotFudgeSunday 2011-04-02 12:01:04

相關問題