2010-09-24 11 views
0

je recherche une question similaire, comme cette question Need approach to show tables using segmented control?SDK iPhone: Comment utiliser Segmented pour contrôler deux TableView différents?

la solution utilise tableview unique

Mais je pense que mon problème est un peu différent

car la vue aura un contrôle segmenté, a deux choix : « DHCP » et « manuellement »

Quand j'Enfoncé « DHCP », il y aura une table groupée sous le contrôleur segmentée

Cette tableview est non modifiable, montre seulement 3 éléments (adresse IP, masque, routeur) dans chaque rangées

Mais si pressé « manuellement », le tableview deviendra modifiable

peut seul type comme la ligne 1" IP Address : 169.95.192.1 », ligne 2 "Subnet mask 255.255.255.0" ...

ma question est

< 1> Comment utiliser le contrôle segmentée pour passer deux tables différentes?

< 2> Comment créer une vue de table modifiable?

un grand merci pour la lecture et répondre à cette question.

Répondre

0

droit ... bien - vous devez avoir un BOOL mondial, par exemple BOOL isManual;

maintenant dans chacune de vos méthodes de UITableViewDatasource vous devez vérifier bool:

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

    static NSString *CellIdentifier = @"Cell"; 

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

    if(isManual){ 
     // set cell content for manual 
    } 
    else{ 
     //set cell content for DCHP 
    } 

    return cell; 
} 

// this function allows you to set a table view cell as editable 
// look up UITableView delegate methods for more :) 
- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath { 
    if(isManual){ 
     return YES; 
    } 
    else{ 
     return NO; 
    } 
} 

et similaires.

Ensuite, dans votre méthode de rappel de contrôle segmentée que vous souhaitez modifier isManual et reloadData sur votre table:

- (void)segmentedControlChanged:(id)selector { 
    UISegmentedControl *control = selector; 
    int selected = [control selectedSegmentIndex]; 

    if(selected == 0){ 
      isManual == NO; 
     } 
     else{ 
      isManual == YES; 
     } 
    [self.tableView reloadData]; 
} 

espoir qui aide un peu - même si son assez vague. :)

+0

merci, je pense que cette logique est juste, mais je ne suis pas encore d'implémenter votre code, je vais l'essayer, et vous dire si ça marche ou pas, seulement un peu vague, pas grave. –

+0

Que faire si j'utilise IB pour créer deux tablesview, que si utiliser if, if (selectedSegmentIndex == 0) {view1.hidden = NON; view2.hidden = YES;} else {view1.hidden = YES; view2.hidden = NO ;}, sera-t-il plus facile? –

+0

Je ne sais pas ... vous pouvez l'essayer. :) Je n'utilise pas IB si je fais des choses compliquées comme celle-ci. C'est beaucoup plus méthodique pour le faire par programme. :) –