2009-09-09 6 views
0

S'attendre à vos conseils de puits!Barre d'onglets sur TableView?

J'ai une TableView (Table groupée créée via I.B). Je montre des données sur la table lorsque le code s'exécute en utilisant la vue du contrôleur de navigation. Je veux ajouter une "barre d'onglets" dans ma vue Table que ce soit par I.B (ou) par programme. Par exemple: Lancez l'application "Horloge" intégrée, où vous pouvez voir une barre d'onglets avec les options "Horloge mondiale", "Alarme", "Chronomètre" et "Chronomètre" en vue unique. J'ai essayé de créer de la même manière en ajoutant une 'barre d'onglets' dans I.B, mais le glisser-déposer de la barre d'onglets ne se trouve pas dans la vue tabulaire. Je ne sais pas pourquoi. (ou) j'ai même essayé par programme de le créer dans la vue Table, mais pas réussi. Est-ce que ce n'est pas possible? Quelqu'un peut-il m'aider s'il vous plaît à signaler le code ou des échantillons?

merci.

Calve/

+0

Je veux juste que vous soyez au courant des lignes directrices UI forcé par Apple, becoz même si vous réussissez le faire, je doute Apple vous permettra d'invoquer une barre d'onglets dans une table. – rkb

Répondre

0

Essayez de créer un UIView et en ajoutant une tabBar à ce point de vue, et placez maintenant ce point de vue à l'intérieur de votre table. J'ai essayé et son travail,

Ainsi, votre cellForRowAtIndexPath fonction ressemblera à ceci

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 

    static NSString *CellIdentifier = @"Cell"; 

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
    if (cell == nil) { 
     cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease]; 
    } 

    UIView *tempView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 50)]; 
    UITabBar* tabBarView = [[UITabBar alloc] initWithFrame:CGRectMake(0, 0, 320, 50)]; 
    NSArray* tabbarItems = [[NSArray alloc] initWithObjects:[[UITabBarItem alloc] initWithTitle:@"Item1" image:nil tag:1],[[UITabBarItem alloc] initWithTitle:@"Item2" image:nil tag:2],[[UITabBarItem alloc] initWithTitle:@"Item3" image:nil tag:3], nil]; 
    tabBarView.items = tabbarItems; 
    [tempView addSubview:tabBarView]; 

    [cell addSubview:tempView]; 


    return cell; 
} 

Alors maintenant, au lieu d'utiliser la cellule par défaut, vous pouvez personnaliser la façon dont vous want.Also je nai considérais question de la libération de la mémoire Vous devrez peut-être mettre à jour le code pour libérer la mémoire allouée.

+0

Merci beaucoup. Votre code fonctionne. Mais ayant un autre problème: Créer une barre d'onglets a été adaptée à la ligne du tableau, donc chaque fois que je fais défiler le contenu de la table, la barre d'onglets descend également avec ça. Je veux que la barre d'onglets soit travaillée séparément et qu'elle soit permanente en bas, pas combinée avec les éléments de Table Row. –

+0

Eh bien alors vous pouvez faire la même chose mais l'ajouter à la vue au lieu de la cellule. Comme si j'ajoutais la vue à la cellule, ajoutez plutôt la vue à votre page d'accueil, où que vous vouliez. – rkb

+0

Merci. J'ai vérifié cela déjà en entrant l'extrait de code comme ci-dessous, mais le même problème observé. - (void) viewDidLoad { [super viewDidLoad]; // Notre code ici pour créer une barre d'onglets ..................................... [tempView addSubview: tabBarView]; [self.view addSubview: tabBarView]; } Tout conseil s'il vous plaît. –

2

Je pense que vous prenez la mauvaise approche. L'ajout d'une barre d'onglets à votre vue de table est incorrect. Vous êtes censé commencer avec l'application de la barre d'onglets et ajouter un contrôleur de navigation à cette application de la barre d'onglets. À l'intérieur du contrôleur de navigation, vous pouvez ajouter une vue avec une table dessus.

2

Vous devez l'ajouter à la vue de votre contrôleur parent. De plus, l'élément tempView n'est pas nécessaire.

E.g. si l'application utilise un contrôleur de navigation comme le contrôleur principal de vue que vous souhaitez ajouter à votre classe UITableViewController personnalisée:

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; UITabBar* tabBarView = [[UITabBar alloc] initWithFrame:CGRectMake(0, 430, 320, 50)]; 
    NSArray* tabbarItems = [[NSArray alloc] initWithObjects:[[UITabBarItem alloc] initWithTitle:@"Item1" image:nil tag:1],[[UITabBarItem alloc] initWithTitle:@"Item2" image:nil tag:2],[[UITabBarItem alloc] initWithTitle:@"Item3" image:nil tag:3], nil]; 
    tabBarView.items = tabbarItems; 
    [self.navigationController.view addSubview:tabBarView]; 
} 
Questions connexes