Domanda

Ho scritto qualche codice MonoTouch per visualizzare un Nib'less UITableView e la vista sembra ok popolato con i dati cellulari in esposizione iniziale. Tuttavia quando tocco scorrere verso il basso per visualizzare ulteriori dati alla fine con un patten griglia doppia comprendente linee di separazione delle cellule orizzontali statici che non si muovono con l'azione di scorrimento più un altro insieme o linee di separazione delle cellule orizzontali distanziate correttamente e che si muovono con l'scorrimento verso il basso l'azione.

Dopo lo scorrimento indietro fino alla parte superiore della vista tabella, i orizzontali statici e dinamici sincronizzare perfettamente e lo schermo sembra normale. Ulteriori scorrimento ricrea il problema.

Sono utilizzando oggetti predefiniti UITableViewCell per popolare le righe della tabella.

Probabilmente ho mancato di configurare qualcosa che Interface Builder sarebbe normale fare. Qualche idea? Speriamo che la gente Objective-C saranno in grado di interpretare il codice .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 );

Aggiornamento 1: ero preoccupato il set supplementare di linee di separazione delle cellule orizzontali sono stati Bleeding Through dalla vista precedente reso nella pila controller di navigazione. Così ho ri-ordinato l'applicazione per fare la tabella problematica la prima vista visualizzato su app di start-up, ma il problema è rimasto.

Aggiornamento 2: Aggiunto

tableView.SeparatorStyle = UITableViewCellSeparatorStyle.None;

Questo evita la doppia serie di linee orizzontali, ma io sono ancora a sinistra con le orizzontali statiche che si intersecano attraverso il centro delle cellule, come i rotoli vista tabella.

Aggiornamento 3: una teoria vaga questo è qualcosa a che fare con una mancata corrispondenza di configurazione altezza della cella o di sfondo riempire problema e così le linee orizzontali potrebbero rappresentare pixel non verniciate nella vista tabella. Non sono sicuro di come testare questa teoria?

È stato utile?

Soluzione

soluzione trovata. L'esempio di codice di cui sopra era stato adottato da un 3rd party MonoTouch applicazione di esempio nella blogshere. Questo codice sembra essere la creazione di due UITableViews completamente sovrapposti e le linee della griglia statiche erano probabilmente dal UITableView vuota e più in profondità l'ordine z che non ha risposto ad alcuna gesti tocco di scorrimento.

Non è necessario creare un'istanza manualmente un oggetto UITableView come mostrato sopra perché la classe UITableViewController fa per noi, quindi la () chiamata addSubview è superflua.

Ecco il codice che funziona per me:

public override void ViewDidLoad ()
{
    base.ViewDidLoad ();
    this.TableView.Source = new TableSource();
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top