2009-10-19 6 views
1

J'ai une plume qui contient deux TableViews. Les vues de table sont de la même classe que j'ai créée qui est une sous-classe d'un UITableViewController. Je crois que tout est correctement relié. Cependant, quand je mets le UITableView à l'UITableViewController puis exécutezProblèmes UITableViewController

[uitableviewcontrollervariablename reloadData]; 

J'obtiens d'abord un avertissement que la classe ne peut pas répondre à reloadData. Je pensais que tous les UITableViewControllers avaient une classe reloadData?

J'essaye de raccorder ces articles incorrectement?

Mise à jour avec le code: TopicViewController.h

@interface TopicViewController : UIViewController { 
    NSInteger topicID; 
    Topic *topic; 

    IBOutlet ThoughtTableViewController *featured; 

} 

@property (retain) Topic *topic; 
@property (readonly) NSInteger topicID; 
@property (retain) IBOutlet ThoughtTableViewController *featured; 

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil ID:(NSInteger)ID; 

@end 

TopicViewController.m

@implementation TopicViewController 

@synthesize topic; 
@synthesize topicID; 
@synthesize featured; 

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil ID:(NSInteger)ID { 
    if (self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]) { 
     topicID = ID; 
    } 
    return self; 
} 

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


// Implement viewDidLoad to do additional setup after loading the view, typically from a nib. 
- (void)viewWillAppear:(BOOL)animated { 
    [super viewWillAppear:animated]; 

    topic = [[Topic alloc] initWithID:topicID]; 

    NSArray *thoughts = [topic getFeaturedThoughts]; 
    featured = [[ThoughtTableViewController alloc] initWithStyle:UITableViewStylePlain thoughts:thoughts]; 
    [self.featured.tableView reloadData]; 
} 

@end 

Répondre

8

Vos connexions ultra sont très bien ... il vous suffit d'appeler cette méthode sur la classe TableView, pas contrôleur:

[uitableviewcontrollervariablename.tableView reloadData];

EDIT: 10/20/09
Son genre de-difficile de voir ce qui se passe parce que vous utilisez IB au lieu d'ajouter les tables mais programatically les connexions ultra devrait ressembler à ceci:

  • UIViewController est propriétaire deux UITableViews, pas deux UITableViewControllers
  • UIViewController agit comme un UITableViewDataSource, UITableViewDelegate
  • demander chacun des tableViews recharger demandera au DataSource pour les données, dans lequel vous devrez faire la différence entre les deux

Voici un code d'exemple comment le faire programatically:

@interface WhateverController : UIViewController <UITableViewDelegate, UITableViewDataSource> { 
    … 
    UITableView *tableView1; 
    UITableView *tableView2; 
} 
@end 

-

@implementation WhateverController 

… 

- (void)loadView { 
    [super loadView]; 
    tableView1 = [[UITableView alloc] initWithFrame:CGRectMake(YOUR_FRAME_1)]; 
    tableView2 = [[UITableView alloc] initWithFrame:CGRectMake(YOUR_FRAME_2)]; 
    tableView1.delegate = self; 
    tableView2.delegate = self; 
    tableView1.dataSource = self; 
    tableView2.dataSource = self; 
    [self.view addSubview:tableView1]; 
    [self.view addSubview:tableView2]; 

} 

-

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 
    if (tableView == tableView1) { 
     // return a cell using the data for tableView1 
    } else if (tableView == tableView2) { 
     // return a cell using the data for tableView2 
    } 
} 

Alors vous allez ajouter toutes les méthodes de UITableViewDelegate et UITableViewDataSource les méthodes dont vous aurez besoin pour remplir les 2 tablesViews. Lorsque vous voulez recharger les données:

[tableView1 reloadData]; 
[tableView2 reloadData]; 
+0

Merci. Cela a pris soin du message d'avertissement. Cependant, le problème persiste qu'aucune donnée n'est affichée. Dois-je effectuer une mise à jour de la vue contenant uitableview? – Jason

+0

S'il vous plaît mettre à jour pour afficher tout code UITableViewController pertinent car il semble que quelque chose ne soit pas branché juste après tout – coneybeare

+0

mis à jour avec le code – Jason