Cocoa触摸切换视图时触发方法的最佳方法

时间:2011-04-01 21:14:47

标签: iphone cocoa-touch ipad

我有几个按钮为另一个类设置一些变量(通过extern)。事情就是这个变量会改变滑块的maximumValue和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 个答案:

答案 0 :(得分:2)

尝试使用-(void)viewWillAppear:(BOOL)animated方法!

那个方法/应该/适合你!