I have a navigation controller with a root view controller that sets its titeView to a UISearchBar. Upon submitting their query, I push on another view controller which also has a UISearchBar populated with their query. If possible, I would like to keep this search bar in place and just transition the view controller below it. Is this possible with a navigation controller? Or do I need to make a custom container view controller.
One thing you can do is create a new custom view & do transition animation to the custom view upon submitting the query. This way will keep UISearchBar stay in place.
Related
I have have a view controller that is embedded in a UINavigationController and I want to segue to another view controller that is also embedded in a different UINavigationController. If I try to use a push segue, I get an error saying that I can't push a UINavigationController. However, I don't think using a modal segue is appropriate. How should I go about this?
How should I go about this?
You should use a single navigation controller.
the problem is that I want different bar button items for each view controller and they won't change
Each view controller can set up the bar buttons however it likes. Take a look at UINavigationItem. Each view controller has a navigation item, and the navigation item has various properties such as leftBarButtonItems and rightBarButtonItems that you can use to set the buttons.
I want to create a fixed top menu with buttons to navigate through views, right now i have a navigation controller but I don't know how I can present a view controller from the navigation controller and I don't want the back functionality that included in the navigation controller. Is there an easier way were I can use a view controller as a menu and have it always presented static on top, even if the views underneath is changed?
What kind of controller would be easiest controller to use, to create a fixed top menu?
This is the basic setup.
The top bar is a UIToolbar with four barbutonItems
You could imbed the child view controller in the container view and switch the child view controllers when user tap the buttons.
It sounds like you want to create your own parent view controller. I suggest you create a custom UIViewController that has a container view on it, and that you load child view controllers into the container view based on the user's interaction with your navigation menu. This is pretty straightforward to do.
Your view controller will probably act more like a tab bar controller than a navigation controller if I understand what you're looking for.
I have a UICollectionViewController that has a UISearchBar added as a supplementary view, with a UISearchDisplayController attached to it.
The search display controller works as expected, but when the collection view controller is added as a child to another view controller, the animation of the search bar to the navigation bar stops working. I believe this is the correct behaviour since the collection view controller itself doesn't has a navigation bar attached to it.
How can I force the search display controller to use the navigation bar of its parent view and animate to it?
Looks like this is not possible. I ended up giving up on UIViewController containment and adding everything to the same view controller.
I know it's possible to set a background image for the UINavigationBar, but I would like to know if there is a way to share a common background view for all controllers in a UINavigationController. The idea is to have a UIImageView as the background that stays in place rather than "sliding" over itself when navigating to a new controller.
A navigation controller is a kind of view controller and it hosts the currently visible view controller by adding the VC view to its view. You can add things to that view too. Create your image view and add it as a subview of the nav controller view, then send it to the back (or insert at index 0).
I've spent the past few days searching on the web for a solution to my problem, however, I can't seem to find a problem similar to mine. I am using a TabBarController and on one of the tabs I have a segmented Control in the navigation bar that I would like to use to switch between view controllers. The problem is that when I present the second view Controller it appears over the tabbarcontroller. Is there anyway to keep the modally presented Navigation controller in the tabbarcontroller?
This is the first controller.
And this is the controller I am trying to present.
well we can't really comment unless we saw some code. But I think your problem may be to do with your view hierarchy. If I was going to build what you are attempting I would do as follows:
UITabbar controller that contains a custom navigation bar controller
The custom nav bar controller would contain the segment controller and have a protocol defined so that a delegate could be alerted when either segment was selected by the user.
The nav bar's root view controller would be a view controller that acted as a UIView container for the two screens you are displaying (friends and circle screens)
This root view controller would be the delegate for the custom nav controller so that it will know when the user selected a segment.
When the user selected a segment the root view controller would then switch between the friends and circles view controllers in the container.
To do the above have a look at the documentation for creating UIViewController Containers and working with delegates
Hope that helps!