2009-12-17 5 views
2

J'ai écrit un code MonoTouch pour afficher un UITableView Nib'less et la vue semble bien peuplée avec des données de cellule lors de l'affichage initial. Cependant, lorsque je touche pour afficher plus de données, je finis par un double quadrillage composé de lignes de séparation de cellules horizontales statiques qui ne bougent pas avec l'action de défilement plus un autre ensemble ou des lignes de séparation de cellules horizontales correctement espacées et qui se déplacent avec l'action de défilement vers le bas. Après le défilement vers le haut de la vue de la table, les horizontales statiques et dynamiques se synchronisent parfaitement et l'écran semble normal. Un défilement supplémentaire recrée le problème. J'utilise les objets UITableViewCell par défaut pour remplir les lignes de la table.Les lignes de séparation de cellules horizontales UITableView ne défilent pas vers le haut ou vers le bas

J'ai probablement échoué à configurer quelque chose qu'Interface Builder ferait normalement. Des idées? Espérons que les gens d'Objective-C seront en mesure d'interpréter le code .Net.

public override void ViewDidLoad() 
{ 
    base.ViewDidLoad(); 

    _tableView = new UITableView() 
    { 
     Source = new TableSource(), 
     AutoresizingMask = UIViewAutoresizing.FlexibleHeight | UIViewAutoresizing.FlexibleWidth, 
     BackgroundColor = UIColor.White 
    }; 
    _tableView.SizeToFit(); 
    _tableView.Frame = new RectangleF (0, 0, this.View.Frame.Width, this.View.Frame.Height); 
    this.View.AddSubview(_tableView); 

Update 1: me concerne le jeu supplémentaire de lignes de séparation de cellules horizontales saignaient à travers de la vue précédente rendue dans la pile de commande de navigation. J'ai donc re-commandé l'application pour faire de la table problématique la première vue affichée au démarrage de l'application, mais le problème est resté.

Mise à jour 2: Ajout d'

tableView.SeparatorStyle = UITableViewCellSeparatorStyle.None; 

Cela permet d'éviter le double jeu de lignes horizontales, mais je suis toujours à gauche avec les statiques qui se croisent horizontals au milieu des cellules comme les rouleaux de vue de la table.

Mise à jour 3: Avoir une théorie vague sur le problème de non-concordance de la hauteur de la cellule ou sur le problème de remplissage d'arrière-plan. Les lignes horizontales peuvent donc représenter des pixels non peints. Je ne suis pas sûr de savoir comment tester cette théorie?

Répondre

3

Solution trouvée. L'exemple de code ci-dessus a été adopté à partir d'un exemple d'application tierce de MonoTouch dans les blogs. Ce code semble créer deux UITableViews entièrement superposés et les lignes de grille statiques provenaient probablement de l'UITableView vide et plus profond dans l'ordre z qui ne répondait à aucun geste de défilement tactile.

Il n'est pas nécessaire d'instancier manuellement un objet UITableView comme indiqué ci-dessus car la classe UITableViewController le fait pour nous, donc l'appel AddSubview() est superflu.

Voici le code qui fonctionne pour moi:

public override void ViewDidLoad() 
{ 
    base.ViewDidLoad(); 
    this.TableView.Source = new TableSource(); 
}