Sto utilizzando una libreria esterna chiamata SwiftyWalkthrough, che consente di esporre solo determinate visualizzazioni sullo schermo per guidare un nuovo utente attraverso l'interfaccia utente della mia app. Il primo elemento che voglio esposto all'utente è un UITabBarItem. Devo trovare l'UIView associato a quello specifico UITabBarItem. Conosco l'indice per l'oggetto e gli ho dato un tag. Ma non ho trovato un modo per loro di aiutarmi a trovare il punto di vista. Certo, voglio solo usare le interfacce pubbliche per realizzare questo.Come posso trovare UIView per un UITabBarItem specifico?
8
A
risposta
19
Ho risolto il problema accedendo alle sottoview del tabBar. Le viste con userInteractionEnabled sono UITabBarItems. Ordinandoli in base ai loro valori minX garantisce che si trovino nello stesso ordine dell'array tabBar.items.
extension UITabBarController {
func orderedTabBarItemViews() -> [UIView] {
let interactionViews = tabBar.subviews.filter({$0.isUserInteractionEnabled})
return interactionViews.sorted(by: {$0.frame.minX < $1.frame.minX})
}
}
+0
Grazie! Davvero bello ed elegante. So che questo può potenzialmente rompersi in futuro, ma non sembra essere un modo migliore ... – elsurudo
1
testato in iOS10 con Objective-C:
[alert setModalPresentationStyle:UIModalPresentationPopover];
UIView *view = [self.tabBar.selectedItem valueForKey:@"view"];
alert.popoverPresentationController.delegate = self;
alert.popoverPresentationController.sourceView = self.tabBar;
alert.popoverPresentationController.sourceRect = view.frame;
alert.popoverPresentationController.permittedArrowDirections = UIPopoverArrowDirectionDown;
[self presentViewController:alert animated:YES completion:nil];
7
Swift 3 versione per la risposta di Carl Smith
func orderedTabBarItemViews() -> [UIView] {
let interactionViews = tabBar.subviews.filter({$0.isUserInteractionEnabled})
return interactionViews.sorted(by: {$0.frame.minX < $1.frame.minX})
}
Problemi correlati
- 1. Change soltanto un colore specifico UITabBarItem tinta
- 2. iPhone: Scala UIView su un punto specifico
- 3. iOS 8 - Trovare vincoli per un UIView con identificatore
- 4. Trovare EventHandler per evento.topic specifico
- 5. Impossibile trovare la dichiarazione dell'interfaccia per 'UIView'
- 6. Rimuovi UITabBarItem
- 7. Trovare un elemento specifico in un NSArrayController
- 8. Come utilizzare CATransform3D su un UIView per aggiungere un tipo specifico di prospettiva?
- 9. Posso modificare theme_menu_link per un menu specifico?
- 10. Scorrere un UIView per sovrapporre parzialmente un altro UIView
- 11. Come posso aggiornare un XElement specifico?
- 12. Come posso creare angoli angolati su un UIView?
- 13. Come trovare i commit da un utente specifico in Git?
- 14. Come posso trovare un elemento specifico in un elenco <T>?
- 15. UITabBarItem setFinishedSelectedImage: deprecato in iOS7
- 16. Come mascherare un UIView
- 17. Implementare SWRevealViewController su un solo UITabBarItem
- 18. UITabBarItem Icon Animation
- 19. UITabBarItem posizione del titolo
- 20. Come posso clonare/duplicare una sorta di UIView per iOS?
- 21. Come posso fissare un UIView in fondo allo schermo?
- 22. Come posso aggiungere un'ombra a un cerchio UIImageView o UIView?
- 23. Cambia carattere in UITabBarItem
- 24. iOS: Come aggiungere la sottolineatura in UITabBarItem
- 25. Come posso mescolare un intervallo specifico di un ArrayList?
- 26. Come passare un evento tattile da un UIView agli UIView (s) sotto di esso?
- 27. Come aggiungere un badge al sistema generato "Altro" UITabBarItem
- 28. Come posso sapere se un UITableView contiene un NSIndexPath specifico?
- 29. Disabilitazione della rotazione automatica per un UIView
- 30. Animare la maschera per un UIView
Ci sono molti punti di vista nella voce barra delle schede. quale stai cercando? –
Quello che racchiude il titolo e l'icona nella barra delle schede nella parte inferiore dello schermo. Mi aspetto che sia rettangolare, con un'altezza identica all'intera barra delle schede e una larghezza uguale alla larghezza della barra delle schede divisa per il numero di elementi della barra delle schede. –
penso che non ci sia accesso a UITabbaritem backgroundView, possiamo solo mettere l'immagine personalizzata per l'elemento della barra delle schede, ma non è possibile ottenere lo sfondoView per l'elemento tabbar. –