1

J'ai créé un programme UITabBarController qui est chargé dans mon délégué App comme ceci:Impossible d'obtenir UITableViewController secondaire pour afficher dans une UITabBarController

- (void)applicationDidFinishLaunching:(UIApplication *)application {  
tabBarController = [[UITabBarController alloc] init]; 

myTableViewController = [[MyTableViewController alloc] init]; 
UINavigationController *tableNavController = [[[UINavigationController alloc] initWithRootViewController:myTableViewController] autorelease]; 
myTableViewController.title = @"Tab 1"; 
[myTableViewController release]; 

mySecondTableViewController = [[MySecondTableViewController alloc] init]; 
UINavigationController *table2NavController = [[[UINavigationController alloc] initWithRootViewController:mySecondTableViewController] autorelease]; 
mySecondTableViewController.title = @"Tab 2"; 
[mySecondTableViewController release]; 

tabBarController.viewControllers = [NSArray arrayWithObjects:tableNavController, table2NavController, nil]; 

[window addSubview:tabBarController.view]; 
[window makeKeyAndVisible]; 
} 

Maintenant, la question que j'ai est que je peux entrer dans le ne voit aucun problème, mais lorsque j'essaie de cliquer sur un élément de la vue tabulaire, je n'arrive pas à voir apparaître un tableau secondaire dans un onglet. Les onglets fonctionnent très bien, juste les vues secondaires. J'utilise le code ci-dessous dans mon myTableViewController à courir lors de la sélection d'une ligne spécifique (le code atteint la ligne d'aide et accidents) ...

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 
NSUInteger row = [indexPath row]; 
    // this gets the correct view controller from a list of controllers 
SecondaryViewController *svc = [self.controllers objectAtIndex:row]; 

    /*** HELP NEEDED WITH THIS LINE ***/  
[self.navigationController pushViewController:svc animated:YES]; 

} 

Autrement dit, je suis en train de changer de vue sur la nouveau contrôleur de vue tout en gardant les onglets disponibles et en utilisant la navigation pour aller et venir (comme dans l'App iTunes).

Répondre

0

Vous n'avez pas inclus dans votre question comment vous initialisez le tableau self.controllers.

Je suppose que ce tableau n'est pas rempli avec les objets SecondaryViewController initialisés.

EDIT (par exemple ajouté le code qui fonctionne pour moi):

le fichier .h:

@interface FirstLevelViewController : UITableViewController { 
    NSArray *controllers; 
} 
@property (nonatomic, retain) NSArray *controllers; 
@end 

et le fichier .m:

@implementation FirstLevelViewController 
@synthesize controllers; 
- (void)viewDidLoad { 
    self.title = @"First Level"; 
    NSMutableArray *array = [[NSMutableArray alloc] init]; 

    // Disclosure Button 
    DisclosureButtonController *disclosureButtonController = 
    [[DisclosureButtonController alloc] 
    initWithStyle:UITableViewStylePlain]; 
    disclosureButtonController.title = @"Disclosure Buttons"; 
    disclosureButtonController.rowImage = [UIImage 
              imageNamed:@"disclosureButtonControllerIcon.png"]; 
    [array addObject:disclosureButtonController]; 
    [disclosureButtonController release]; 

    // deleted further adds to array ... 

    self.controllers = array; 
    [array release]; 
    [super viewDidLoad]; 
} 
+0

Ces objets sont initialisés SecondaryViewController ... ... dans MyTableViewController viewDidLoad Je: \t SecondaryViewController * = svc [[SecondaryViewController alloc] initWithStyle: UITableViewStylePlain]; \t svc.title = @ "svc"; \t [array addObject: svc]; \t [libération de svc]; \t \t self.controllers = array; et cet objet est renvoyé lorsque je reçois le contrôleur du tableau self.controllers. La valeur n'est pas nulle (elle est donc créée) et le titre est correctement défini. Juste FYI SecondaryViewController sous-classes UITableViewController et auto-délégués –

+0

Hmmm ... semble que nous avons le même livre en face de nous (début de développement de l'iPhone 3) ;-) Je ne peux pas détecter les erreurs dans votre code. Y a-t-il des messages d'erreur du compilateur? –

+0

Je viens d'essayer d'exécuter le code en créant l'objet svc directement (au lieu de le sortir d'un tableau) et ça marche ... donc il y a quelque chose avec l'extraction de l'objet du tableau qui n'est pas tout à fait correct. –

0

En termes simples, je créais le contrôleur array, self.controllers et l'ajout d'objets, puis libérant les objets.

Si vous ne libérez pas l'objet jusqu'à ce que la baie soit libérée, cela ne semble pas poser de problème.

+0

Uuups - je n'ai pas remarqué que vous avez répondu à votre question. Est-ce que votre problème est résolu? –

Questions connexes