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,我顯然做得不對。也許有一個更簡單的解決方案。
謝謝。
我之前嘗試過,但有些錯誤。你是對的。 [super viewWillAppear:YES];必須在那裏才能工作。另外,我必須在[super viewDidLoad]之前放置pageSlider.minimumValue和maximumValue,否則在第一次單擊按鈕時不會調用它。 viewDidLoad我仍然用來初始化一些東西。 – HotFudgeSunday 2011-04-02 12:01:04