2015-07-03 8 views
6

Facendo clic sul pulsante nella prima schermata, all'utente vengono presentati i controller di visualizzazione contenuti in un controller di barra di schede. I controller della vista hanno due tabelle in loro, la prima una tabella statica superiore e una seconda tabella appena sotto. I controller della vista nel controller della barra delle schede che non sono visualizzati in "più" correttamente. Se si passa a "altro" e si seleziona un controller di visualizzazione, la vista viene visualizzata con la cella superiore abbassata.Perché la mia origine di UITableview Y cambia in base alla posizione in TabBarController

Se si passa alla schermata "altro", fare clic su Modifica e spostare l'ordine dei controller di visualizzazione in alcun modo, visualizzare il controller visualizzato tramite "altro" display correttamente. All'uscita dalla sezione "more" la cella della tabella in alto (tabella in alto) non viene visualizzata.

Mi sembra ragionevole che ci sia un problema nell'interfaccia utente o nello storyboard, tuttavia niente mi salta addosso come problema. Ho provato a impostare manualmente i vincoli e anche a usare i vincoli suggeriti.

progetto Questo campione è disponibile presso https://github.com/propstm/NavigationStructureTest

Top two images are prior to modifying the order of view controllers in the tab bar controller. The bottom two, after.

risposta

2

classi Disabilita dimensioni, ed eliminare il vincolo (in alto tableView) di "verticalmente spazio per guida di layout top", aggiungere spazio Spina superiore alla visualizzazione eccellente in grado di risolvere il problema. Forse è un bug di Xcode, vedi this.

+0

Perché downvote then upvote? È la risposta non comprensibile? – NSDeveloper

+0

Rimozione della guida di layout superiore e utilizzo del pin lavorato sia nell'app di esempio, sia nella mia app client più grande che presentava il problema. Grazie per aver condiviso questo link. La soluzione al problema non era qualcosa a cui sarei venuto da solo. – propstm

3

ho semplicemente aggiornato i vincoli nel Due tabella VC, allora il problema non c'era.

top tableview constraints

bottom tableview constraints

+0

Quali vincoli stai utilizzando? Ho aggiornato il ramo principale dell'esempio per non avere alcun problema sullo storyboard e il problema esiste ancora per me. – propstm

+0

pls confronta i tuoi vincoli con la risposta modificata –

+0

Questi valori non funzionano per me.Avendo lo spazio in cima alla guida del layout in alto -44 sta spingendo la vista tabella superiore sotto la barra di navigazione. Sareste in grado di inviare una richiesta di pull al progetto di esempio? – propstm

0

Penso che abbia qualcosa a che fare con il controller "more" fornito dal TabBarController con il proprio controller di navigazione, e lo storyboard impostato per estendere i bordi oltre le barre superiori.

Sebbene si stia tentando di nascondere la barra di navigazione, penso che sia stata effettuata nel posto sbagliato e dovrebbe essere richiesta solo quando l'elemento viene presentato nel controller "more". Il modo in cui è attualmente implementato confonde la guida di layout in alto, che sembra essere lasciata supponendo che ci siano due barre in alto anche se una di esse è nascosta.

Sono riuscito a correggere il progetto demo in due modi. Da uno:

1) Aggiornare lo storyboard e spegnere "estendono bordi" sulla barra scheda (e impostare la barra delle schede e superiore barre da opaco):

enter image description here

O

2) Semplificare il viewWillAppear/scompaiono e viewDidAppear/Disappear metodi e nascondere la barra di navigazione quando all'interno della barra delle schede più regolatore:

- (void)viewDidAppear:(BOOL)animated{ 
    //self.navigationItem.backBarButtonItem.title = @"HOME"; 

    self.tabBarController.title = @"Entity List"; 

    //Pretty activity indicator 
    [self.topTableView reloadData]; 
} 

- (void)viewWillAppear:(BOOL)animated { 
    if (self.navigationController == self.tabBarController.moreNavigationController) { 
     [self.tabBarController.navigationController setNavigationBarHidden:YES]; 
    } else { 
     [self.navigationController setNavigationBarHidden:NO]; 
    } 
} 

- (void)viewWillDisappear:(BOOL)animated { 
    [self.navigationController.navigationBar setHidden:NO]; 
} 

- (void)viewDidDisappear:(BOOL)animated { 
} 

Ciò assicura che la navigazione in alto sia visualizzata correttamente senza rovinare la guida di layout.

Problemi correlati