je la vue suivante hiérarchieiPhone: Animer une vue quand une autre vue apparaît/disparait
UITabBarController - UINavigationController - UITableViewController
Lorsque le tableau apparaît, (animée) je crée une barre d'outils et l'ajouter comme sous-vue du TabBar au bas de la page et laissez-le animer avec la vue de la table. Même procédure dans l'autre sens, lorsque la vue de la table disparaît.
Cela ne fonctionne pas comme prévu.
- La durée de l'animation est OK, mais en quelque sorte pas exact la même chose que l'animation de la vue de la table quand il devient visible
- Quand j'afficher la vue de table pour la deuxième fois, la barre d'outils ne disparaît pas du tout et reste au bas de la vue parent .
Qu'est-ce qui ne va pas?
- (void)animationDone:(NSString *)animationID finished:(NSNumber *)finished context:(void *)context
{
UIView *toolBar = [[[self tabBarController] view] viewWithTag:1000];
[toolBar removeFromSuperview];
}
- (void)viewWillAppear:(BOOL)animated
{
UIEdgeInsets insets = UIEdgeInsetsMake(0, 0, 44, 0);
[[self tableView] setContentInset:insets];
[[self tableView] setScrollIndicatorInsets:insets];
// Toolbar initially placed outside of the visible frame (x=320)
UIView *toolBar = [[UIToolbar alloc] initWithFrame:CGRectMake(320, 480-44, 320, 44)];
[toolBar setTag:1000];
[[[self tabBarController] view] addSubview:toolBar];
[UIView beginAnimations:nil context:nil];
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
[UIView setAnimationDuration:0.35];
[toolBar setFrame:CGRectMake(0, 480-44, 320, 44)];
[UIView commitAnimations];
[toolBar release];
[super viewWillAppear:animated];
}
- (void)viewWillDisappear:(BOOL)animated
{
UIView *toolBar = [[[self tabBarController] view] viewWithTag:1000];
[UIView beginAnimations:nil context:nil];
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
[UIView setAnimationDuration:0.35];
[UIView setAnimationDidStopSelector:@selector(animationDone:finished:context:)];
[toolBar setFrame:CGRectMake(320, 480-44, 320, 44)];
[UIView commitAnimations];
[super viewWillDisappear:animated];
}
Vous voulez dire la barre d'outils du contrôleur de navigation, n'est-ce pas? J'ai besoin d'une autre barre d'outils en bas de la table, mais elle ne doit pas être déplacée avec le contenu de la table lors du défilement vers le haut et vers le bas. Dans le code ci-dessus, j'expérimente un peu l'animation mais la barre d'outils ne devient visible que lorsque la table est en mode édition. Hmmm ... une fois de plus un UIViewController en tant que "conteneur" pour UITableViewController pourrait être une solution. – MacTouch
OK, résolu en utilisant un simple UIViewController au lieu de UITableViewController. Cela ressemble à l'exemple suivant: http://iphonedevelopment.blogspot.com/2008/10/table-view-multi-row-edit-mode.html – MacTouch