2012-06-29 10 views
6

questa è la situazione:UITableViewController all'interno UIScrollView con paginazione orizzontale

ho bisogno di scorrimento orizzontale e tabella all'interno di ogni pagina. Questo è qualcosa di simile all'app di notizie, dovrebbe mostrare notizie da diverse categorie, quando si scorre in una direzione orizzontale, e all'interno di una categoria dovrebbe visualizzare circa 30 notizie, scorrevoli verticalmente, ovviamente.

ho fatto con successo quello che mi serve, ma ...

Ho seguente scenario:

UINavigationController 
|__ UIViewController, which contains ScrollView and PageControl 
    |__ UITableViewController, which holds data in rows, and is displayed inside parent, which is actually ScollView 

So che questa non è una soluzione ideale, ma almeno funziona. Come base, ho usato il codice e il tutorial di Apple per PageScroll trovato su questo link. Invece di semplice viewController da aggiungere a ScrollView, ho usato TableViewController, quindi in pratica aggiungo tableController.tableView a ScrollView.

So anche che aggiungere TableViews all'interno di scrollview è come aggiungere una macchina all'interno di un camion e guidare quella macchina, ma non sono riuscito a trovare un modo più ragionevole di fare la stessa cosa.

Quindi, ho bisogno dei tuoi pensieri su come questo può essere realizzato utilizzando un altro approccio. Io uso storyboard e iOS 5 per questo, e tutto sembra (e sembra) disordinato in questo momento.

Grazie in anticipo, molto.

+0

Sto avendo lo stesso identico problema qui. Quindi come hai risolto questo problema alla fine? Aggiungi ancora UITableViewControllers all'interno di UIScrollView? Grazie! – nonamelive

risposta

5

ho fatto qualcosa di simile qualche mese fa, ed è stato così:

  • UINavigationController
    • UIViewController con un UIScrollView
      • UIViewController con UITableView interno (uso questo perché semplicemente odio UITablewViewController)

ho seguito il Apple's documentation about creating custom containers. C'è un grande video su questo nella sezione video del WWDC 2011 se non sbaglio. Posso dire con orgoglio che il codice è veramente pulito e semplice da capire.


risposta 1,0

L'unica cosa è, hai riuscito a ottenere una corretta manipolazione orientamento della tableView, senza alcun hack, o non si usa?

No, in questo caso non l'ho fatto, ma sono sicuro che sarei stato in grado di farlo senza alcun problema. Vedete, la maggior parte dei problemi arriva quando si è solo [self.view addSubView:newViewController.view];. Basta aggiungere il UIView, tutta la logica della rotazione viene gestita dal nuovoViewController e non dal controller dove sarà lo UIView.

L'altra cosa è che se cerco di implementare, per esempio, GridView o qualcosa del genere, per iPad, la gestione dell'orientamento e le animazioni diventano molto brutte.

ho implementato questo in un altro progetto ed è stato abbastanza facile da implementare una volta capito cosa sta succedendo:

  1. ho usato un UIViewController con un UITableView così ho potuto ottenere tutte le chicche dal dequeueReusableCellWithIdentifier:, creazione dei titoli di sezione, intestazioni e piè di pagina di tabelle, ecc. Ho appena pensato che non importa cosa farei con uno UIScrollView a UITableView sarà sempre più ottimizzato. Come UITableViewCell's ho appena usato un supporto con 3 quadrati, ognuno dei quali è un'immagine. (la mia domanda era una vetrina di immagini)
+0

Bene, questo sembra proprio il mio, tranne per la cosa che odi. L'unica cosa è, sei riuscito a ottenere la corretta gestione dell'orientamento del TableView, senza alcun trucco, o non lo usi? L'altra cosa è, se cercherò di implementare, per esempio, GridView o qualcosa del genere, per iPad, la gestione dell'orientamento e le animazioni diventano molto brutte. @Jacky Boy, grazie per la risposta, ovviamente. – Dimmy3

+0

Controlla la mia modifica 1.0 – Peres

+0

Q1: Vediamo se ho capito bene: Is [self.view addSubView: newViewController.view] (io uso [scrollView addSubview: newController.tableView]) modo corretto di andare, o dovrei caricare una nuova pagina (controller) in modo diverso? Quando faccio il modo in cui ho fatto, quando l'orientamento è cambiato, la larghezza della cella rimane la stessa dell'orientamento verticale, e una parte della pagina seguente viene visualizzata dopo. – Dimmy3

Problemi correlati