Iphone 切换视图时触发方法的最佳方式
我有几个按钮(通过extern)为另一个类设置一些变量。这个变量改变了滑块的最大值和UIImage的图像 我是通过viewDidLoad方法来实现这一点的,问题是viewDidLoad仅在我第一次加载该控制器时才起作用 这是我如何在Home上加载控制器的代码。m:Iphone 切换视图时触发方法的最佳方式,iphone,cocoa-touch,ipad,Iphone,Cocoa Touch,Ipad,我有几个按钮(通过extern)为另一个类设置一些变量。这个变量改变了滑块的最大值和UIImage的图像 我是通过viewDidLoad方法来实现这一点的,问题是viewDidLoad仅在我第一次加载该控制器时才起作用 这是我如何在Home上加载控制器的代码。m: - (void)openPagesFrom:(int)pageStart to:(int)pageEnd name:(NSString *)title{ […] [UIView beginAnimations:ni
- (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];
}
- (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];
}
- (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;
}
我删除了页面上的视图。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];
}
- (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];
}
- (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;
}
在同一个文件上,viewDidLoad方法如下所示:
- (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];
}
- (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];
}
- (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,但我显然做得不对。也许有一个更简单的解决办法
谢谢。尝试使用-(void)view将显示:(BOOL)animated
方法
那种方法/应该/适合你 我以前试过,但有点不对劲。你说得对。[超级视图将显示:是];必须在那里才能工作。另外,我必须将pageSlider.minimumValue和maximumValue放在[super viewDidLoad]之前,否则在我第一次单击按钮时它不会被调用。viewDidLoad我仍然使用它初始化一些东西。