2010-10-15 5 views
0

HI, Alors, voici ce que j'essaie de faire. J'ai une vue de table et j'emploie des cellules de vue de Tableau faites sur commande avec des champs de texte. Fondamentalement, vous entrez du texte dans les champs et l'enregistre dans un contexte d'objet géré. J'ai mis en place la vue de table ainsi;Cellules de vue de table personnalisées avec des problèmes TextField

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

    //static NSString *[email protected]"CustomCell"; 
static NSString *CellIdentifier = @"Cell"; 
CustomCell *cell = (CustomCell*) [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
if (cell== nil) { 
    cell= [[[CustomCell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier] autorelease]; 
} 



switch (indexPath.row) { 
    case 0: 
    cell.primaryLabel.text = @"Name"; 
    cell.mainTextField.text=product.prodName; 
    cell.selectionStyle = UITableViewCellSelectionStyleNone; 
    break; 

    case 1: 
    cell.primaryLabel.text = @"Store"; 
    cell.mainTextField.text=product.store; 
    cell.selectionStyle = UITableViewCellSelectionStyleNone; 
    break; 

    case 2: 
    [email protected]"Amount"; 
    cell.mainTextField.text=product.amount; 
    cell.mainTextField.keyboardType=UIKeyboardTypeNumberPad; 
    cell.selectionStyle = UITableViewCellSelectionStyleNone; 
    break; 

    case 3: 
    [email protected]"Measure"; 
    cell.detailLabel.text=product.measure; 
    cell.mainTextField.hidden=YES; 
    break; 

    case 4: 
    [email protected]"Package"; 
    cell.detailLabel.text=product.container; 
    cell.mainTextField.hidden=YES; 
    break; 

    case 5: 
    [email protected]"Aisle"; 
    cell.detailLabel.text=product.aisle; 
    cell.mainTextField.hidden=YES; 
    break; 

    case 6: 
    [email protected]"Note"; 
    cell.mainTextField.text=product.note; 

    cell.selectionStyle = UITableViewCellSelectionStyleNone; 
    break; 

    default: 
    break; 
} 
return cell; 
} 

Alors, voici mon problème. Au moment de l'exécution, je peux entrer du texte dans les cellules 1-3, aucun problème, il sauve et tout est heureux. Mais si j'entre quelque chose dans la cellule 6, il retourne Null pour cell.nameTextField.text et je ne sais pas pourquoi.

Ce que j'ai fait. 1. J'ai essayé de créer une seule cellule d'instance dans la plume et de la placer dans cette cellule. 2. J'ai essayé de le configurer à index.row 0 d'une nouvelle section. 3. J'ai essayé d'ajouter un champ de texte à la vue de contenu d'une cellule standard à cet index. 4. commenté la méthode save pour cette cellule. 5. essayé de créer un textField distinct et de définir le cell.mainTextFiled à caché. 6. Essayé de créer la vue de la table par programme sans utiliser la plume. 7. Tout a fonctionné quand j'ai utilisé des cellules d'instance unique de la plume pour les quatre de ces cellules. Si c'est la réponse, qu'il en soit ainsi. Mais les cellules de vue de table personnalisées créées par programmation sont beaucoup plus concises et élégantes. Ajouter une insulte à la folie Si je déplace cette cellule à un index de 5 ou moins, tout fonctionne très bien. Tout indice supérieur à 5 et ça explose.

J'ai parcouru le web et les dev docs ainsi que les 4 livres de dev iPhone que j'ai. Je suis ici parce que j'ai épuisé ce que je peux faire. Je suis sûr que c'est quelque chose de stupide qui me manque mais je suis déconcerté. Toute aide serait appréciée. Le but ultime est d'avoir des notes dans une deuxième section avec plus d'espace pour écrire. Oui, je sais qu'il existe d'autres façons de le faire, mais il semble que cela devrait fonctionner et j'aimerais savoir pourquoi cela ne fonctionne pas. Oh, je devrais mentionner que j'utilise seulement le simulateur d'iPhone. Je n'ai pas essayé de courir sur un téléphone. Merci.

Répondre

0

OK, je suis un idiot. Après avoir posté cela, j'ai trouvé la réponse (bien sûr!) Tout simplement. Lorsque la cellule avec le champ de texte défile hors de la vue, elle supprime la cellule. Lorsque la cellule réapparaît, elle est ré-instanciée avec un champ de texte propre et brillant. Alors maintenant, je cherche des moyens de surmonter cela. Les tableaux viennent à l'esprit. Je posterai ce que je trouve. Si quelqu'un a des idées sur ce problème, j'aimerais les entendre.

Questions connexes