2010-01-03 5 views
0

J'essaie de configurer une application de barre d'onglets comme contrôleur racine, et l'un des onglets pour une configuration de navigation. Sur mon contrôleur de vue racine de la vue de navigation, j'ai un niveau enfant qui est une sous-classe de l'UIViewController appelé IntervalViewController.Aide pour la configuration UITableView/Navigation avec l'interface UITabBar

je dans ma racine View Controller (IntervalSetupViewController.m):

#import "IntervalSetupViewController.h" 
#import "IntervalViewController.h" 

@implementation IntervalSetupViewController 

@synthesize controllers; // My Array for the Table View Cells 

- (void)viewDidLoad { 
    self.title = @"Interval Setup"; 
    NSMutableArray *array = [[NSMutableArray alloc] init]; 

    // Interval List Setup 
    IntervalViewController *newInterval = [[IntervalViewController alloc] 
              initWithStyle:UITableViewStylePlain]; 
    newInterval.title = @"Interval 1"; 
    [array addObject:newInterval]; 
    [newInterval release]; 

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

- (void)viewDidUnload { 
    self.controllers = nil; 
    [super viewDidUnload]; 
} 

- (void)dealloc { 
    [controllers release]; 
    [super dealloc]; 
} 

#pragma mark - 
#pragma mark Table Data Source Methods 
- (NSInteger)tableView:(UITableView *)table numberOfRowsInSection:(NSInteger)section { 
    return [self.controllers count]; 
} 

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

    static NSString *IntervalCell = @"IntervalCell"; 

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

    // Configure the cell 
    NSUInteger row = [indexPath row]; 
    IntervalViewController *newController = [controllers objectAtIndex:row]; 
    cell.textLabel.text = newController.title; 
    cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator; 
    return cell; 
} 

#pragma mark Table View Delegate Methods 
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 
    NSUInteger row = [indexPath row]; 
    IntervalViewController *nextController = [self.controllers objectAtIndex:row]; 
    [self.navigationController pushViewController:nextController animated:YES]; 
} 

@end 

Voici l'écran d'erreur de la console: * - [IntervalViewController initWithStyle:]: sélecteur non reconnu envoyé à l'instance 0x3b33e60 * en raison de l'application Mettre fin exception uncaught 'NSInvalidArgumentException', raison: '*** - [IntervalViewController initWithStyle:]: sélecteur non reconnu envoyé à l'instance 0x3b33e60'

Je suppose que je passe un Inva argument lid à ma méthode initWithStyle, mais je pensais que UITableViewStylePlain était un paramètre valide. Est-ce que je mets ça en place? Je suivais l'exemple dans le livre APress Beginning iPhone Development 3 et j'essayais de le modifier un peu à ce que je voulais faire, mais je suis nouveau au codage. Merci!

Répondre

1

initWithStyle est utilisé pour initialiser un UITableViewController pas UIViewController

+0

il est ainsi parce que mon contrôleur de l'enfant est une sous-classe de UIViewController je ne peux pas faire initWithStyle? Je suppose que dans ma tête je pense que je veux mettre en place les cellules de vue de la table pour le contrôleur de vue racine de la partie de navigation, donc je voulais créer des lignes dans un format de table pour cela. Et puisque mon IntervalSetupViewController était une sous-classe de UITableViewController, c'était OK? Que devrais-je faire à la place? – Crystal