2010-10-11 18 views
0

Ayant échoué en essayant de puzzle ensemble différentes sources à toute forme d'approche cohérente ou concept, je me tourne à nouveau vers les personnes savantes de StackOverflow. Mon problème est assez spécifique et c'est peut-être pour cela que j'ai de la difficulté à trouver des informations qui correspondent ou peut-être que je ne suis pas content de chercher. De toute façon, ici va.scale a UITableView to fullscreen de l'intérieur d'un UIScrollView

Je construis une application qui a un UIScrollView peuplé de UIViews qui à leur tour sont peuplées de UITableViews. J'ai pagination et tout mis en place et fonctionne correctement. Fondamentalement, j'essaye de refléter la fonctionnalité du comportement d'étiquette (mobile) de Safari, ou (encore plus proche de ce que j'essaye de réaliser) la page principale de Tweetdeck. Je n'ai pas pu poster une image mais si vous cliquez sur le lien ci-dessous, vous verrez ce que je veux dire.

http://www.redmondpie.com/wp-content/uploads/2009/07/TweetdeckIphone04.jpg

La raison pour les UITableViews sont à l'intérieur UIViews est que c'était la seule façon que je pouvais comprendre pour rendre les tableViews ont un espace entre eux, au lieu d'être juste à côté de l'autre. J'ai essayé de définir la taille de la tableViewViews et l'encart de la scrollView, parmi beaucoup de choses mais les vues de table ont toujours fini de remplir le scrollView entier. Comme je clique sur une tableView/UIView à l'intérieur de la scrollView, je veux que tableView/UIView se redimensionne et remplisse tout l'écran (moins tabBar et navigationBar), et ensuite je devrait être capable de redescendre en appuyant sur le bouton de retour sur la barre de navigation.

Toute information ou impulsion dans la bonne direction est grandement appréciée.

Répondre

1

Je suis en train de faire quelque chose de similaire dans mon application:

-(void)displayPage:(int)targetedPage { 
    ... 
    [UIView beginAnimations:@"MultiViewAnimate" context:nil]; 
    [UIView setAnimationDuration:0.3]; 

    //animate the frame 
    //targetedPage is the index (table view) that should be displayed 
    [(UITableView *)[tableViews objectAtIndex:targetedPage] setFrame:CGRectMake(0, 0, 320, 372)]; 
    [(UITableView *)[tableViews objectAtIndex:targetedPage] setUserInteractionEnabled:YES]; 
    ... 

    [UIView commitAnimations]; 
} 

-(void)displayMultiView:(id)sender { 
    ... 
    [UIView beginAnimations:@"MultiViewAnimate" context:nil]; 
    [UIView setAnimationDuration:0.3]; 

    //animate the frame 
    //targetedPage is the index (table view) that I was previously looking at full screen 
    [(UITableView *)[tableViews objectAtIndex:targetedPage] setFrame:CGRectMake(60, 70, 200, 232)]; 
    [(UITableView *)[tableViews objectAtIndex:targetedPage] setUserInteractionEnabled:NO]; 
    ... 

    [UIView commitAnimations]; 
} 

Dans ce code tableViews est un tableau de tous les UITableView s que le ScrollView contient.

Je fais un peu plus que cela parce que je fais une capture d'écran de ma vue et en utilisant un UIImageView pour la vue mise à l'échelle, puis animant revenir à la UIWebView respectifs. Un avantage de cette approche est que je peux simplement attacher un UITapGestureRecognizer au UIImageView et ne pas avoir à jouer avec désactiver l'interaction utilisateur sur le UITableView.