2010-05-20 8 views
1

comment puis-je savoir quelle cellule tableview a été sélectionnée? (Étant dans la vue de détail) Le problème est que. J'ai un contrôleur de vue de table. Ici sont analysés à partir des entrées Internet à la table. C'est donc une vue tabe dynamique qui se charge depuis internet. Je ne connaîtrai pas le nombre d'entrées dans la table, donc je ne connaîtrai pas les détails à afficher lorsque je clique sur une ligne. Donc, j'ai fait une vue. Cette vue contient un calendrier. Sur ce calendrier (qui est le détail) j'analyserai les données d'Internet en fonction de la ligne sélectionnée. Par exemple: j'ai table: entrée 1, entrée 2, entrée 3, entrée 4 Lorsque je clique sur l'entrée 2, je dois appeler un php avec l'entrée d'argument 2. Le php saura quelle entrée sur la table j'ai sélectionnée et va me générer le bon xml que je vais analyser.Comment puis-je savoir dans la vue détaillée quelle cellule dans tableview a été sélectionnée?

Voici ma tableview fonction didSelectRow:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 
    // Navigation logic -- create and push a new view controller 

if(bdvController == nil) 
    bdvController = [[BookDetailViewController alloc] initWithNibName:@"BookDetailView" bundle:[NSBundle mainBundle]]; 
    Villa *aVilla = [appDelegate.villas objectAtIndex:indexPath.row]; 

    [self.navigationController pushViewController:bdvController animated:YES] 

Et voici ma fonction d'auto vue sur detailviewcontroller:

-(void)loadView { 

    [super loadView]; 

    [email protected]"Month" 

    UIBarButtonItem *addButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"ListView" style:UIBarButtonItemStyleDone target:self action:@selector(add:)]; 
    self.navigationItem.rightBarButtonItem = addButtonItem; 

    calendarView = [[[KLCalendarView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, 320.0f, 373.0f) delegate:self] autorelease]; 
    appDelegate1 = (XMLAppDelegate *)[[UIApplication sharedApplication] delegate]; 

    myTableView=[[UITableView alloc]initWithFrame:CGRectMake(0, 260, 320, 160)style:UITableViewStylePlain]; 
    myTableView.dataSource=self; 
    myTableView.delegate=self; 
    UIView *myHeaderView=[[UIView alloc]initWithFrame:CGRectMake(0, 0, myTableView.frame.size.width,2)]; 
    myHeaderView.backgroundColor=[UIColor grayColor]; 
    [myTableView setTableHeaderView:myHeaderView]; 

    [self.view addSubview:myTableView]; 
    [self.view addSubview:calendarView]; 
    [self.view bringSubviewToFront:myTableView]; 
} 

Je pense que ici en soi la charge que je dois faire la si la procédure. Si indexPath.row = x analyser fisier.php? Variabila = title_of_rowx mais la question est de savoir comment je connais la variable indexPath?

Répondre

0

Vous pouvez définir une propriété sur BookDetailViewController:

BookDetailViewController.h:

@interface BookDetailViewController : UITableViewController { 
    NSIndexPath *selectedIndexPath; 
} 
@property (nonatomic, retain) NSIndexPath *selectedIndexPath; 
@end 

BookDetailViewController.m

@implementation BookDetailViewController 
@synthesize selectedIndexPath; 
- (void)dealloc { 
    [selectedIndexPath release]; 
} 
// ... 
@end 

tableView: didSelectRowAtIndexPath

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 
    // Navigation logic -- create and push a new view controller 

    if(bdvController == nil) { 
     bdvController = [[BookDetailViewController alloc] initWithNibName:@"BookDetailView" bundle:[NSBundle mainBundle]]; 
    } 
    bdvController.selectedIndexPath = indexPath 
    Villa *aVilla = [appDelegate.villas objectAtIndex:indexPath.row]; 

    [self.navigationController pushViewController:bdvController animated:YES] 
} 

Selon ce que vous faites dans votre application, il peut être plus logique de faire de la propriété un objet Villa plutôt qu'un NSIndexPath.

Questions connexes