Toolbar not visible - ios

Can anyone tell me why, in the storyboard here below, when I arrive from the first tab the toolbar is visible, but when I arrive from the second tab is not visible anymore.

The first tab has a navigation controller as the root controller - the second does not.
You can select SearchVC in your storyboard and then use the Editor - Embed In - Navigation Controller menu option to add a navigation controller. That might not be how you want your UI. But that would achieve what you want visually ...
Update:
Based on discussions with the OP, the issue was that SearchVC was adding EditorVC as a child view controller and then EditorVC in turn would add ReadVC to the navigation stack.
EditorVC, as it appears above, is embedded within a UINavigationController. I suggested that OP remove that UINavigationController instance and then push EditorVC on to SearchVC's navigation controller and then later when ReadVC is displayed from EditorVC, again push ReadVC on to the existing navigation controller. I believe this should resolve the issues that OP was seeing.

Related

Why is the navigation bar not appearing in the Simulator?

In my application that I am building, I set up a navigation controller to control navigation through the app. I created a Root View Controller.
I linked that Root View Controller to another View Controller using a show segue. Now the View Controller displays the navigation bar with the Large Titles turned off in the storyboard.
Even though it is showing up in the storyboard when I click the plus button, the navigation bar is not showing up in the Simulator. Does anybody know why?
Here is the complete Storyboard (Navigation Controller on the left - Root View Controller in the middle - Add View Controller on the right).
If someone could help me with this that would be amazing. Thank you.
You can retrace the steps and see where it went wrong:
1: Create a new single page app. Remove the VC and add TableVC. Set as root VC.
2: Select TableVC, Editor -> Embed in navigation controller.
3: Add tab bar item to the added navigation bar of the TableVC.
4: Create another VC and control drag from tab bar item to the VC (a push segue).
picture
Hi!Have you linked the Storyboard with ViewController like picture?That could be one reason.

Using UITabBarController with UINavigationController - Swift 3

I am making an app which requires a use of a UITabBarController along with UINavigationController. I have made the following flow in storyboard.
See image
Now the first question is that is this accepted by Apple, as there are too many discussions for the same.
The other matter of concern is that is it possible to eliminate any UINavigationController and still get the same flow of the app? The main thing required is to have the SAME tab bar and navigation bar on all sub tabs of the tabs. One point to be noted is that if I remove the second UINavigationController then my app navigates directly from sub tab to home view controller on clicking back button.
I have been stuck on this since hours now. I am new to iOS app development and have never uploaded any app to the app store. Any help would greatly valued.
EDIT :
I put the second navigation controller as shown in the answers - see this flow, But because I have a navigation controller before the HomeViewController, so I am getting a navigation bar at the top and then some empty space below that(exactly equal to the top navigation bar) and then the page contents on runtime. Any solution to this?
Yes, it is acceptable by Apple.
But View hierarchy is not managed correctly. In your case Tab bar will be the root view controller for 2nd navigation controller.
Also, Tab and sub tab you are pushing will be part of 2nd navigation controller.
That's the reason you are getting back on Home view controller.
It's good practice to keep navigation controller to each Tab to manage it's sub-tab hierarchy.
You could present tab bar controller or setviewcontroller from Home View controller.
First embed tab bar controller as in this image and the embed navigation bar controller as in this image finally this will look like

Navigation Controller doesn't appear on Dashboard ViewController

I am using a Navigation Controller in Xcode8, the navigation bar doesn't appear on the following View Controller on the Dashboard. They will appear on the simulator and on the ViewController topDown tree, but nothing on the view of the dashboard.
Navigation Controller Screenshot
Its'a strange problem, It always happen to me too. You can change your segue type to deprecated Push to see nav bar, after that you can change again.
When you connect your navigation controller to the view controller it happens, because it creates segue type to Show. When you change the segue type to Push segue, you can see the Nav Bar on your View Controller.
Just click the segue, you should see the segue options on the right like the picture.
The problem was the segue before the Navigation Controller. When I delete it, all the Navigation Bar come back. Don't know why, but if the problem happen, you just have to delete this segue and then with Ctrl+Z, the segue come back and the nav bar stay

How to "virtually" tap back button in Navigation Bar

I have app, where is Segmented Control inside of my Navigation Bar. Under navigation bar I have 3 containers. In these containers I have Table View Controllers. If you tap on segmented control, one TVC appear and others disappear (container1.hidden = true and so on).
Problem is when I press "save" button which is also in navigation controller - button doesn't trigger "virtual push of back button".
I used following code which works in my other projects (its in button's action which is in VC that contains all container views) but not this time:
if let navController = self.navigationController {
navController.popViewControllerAnimated(true)
}
Image for better insight:
UPDATE: Thanks to # Alexey Bondarchuk I solved it. Comments may be confusing so I just recap problem and solution.
Originally, I had ViewController. To this controller I embed in Navigation Controller. To this Navigation Controller I connected segues. And that was mistake.
So I deleted this embed in navigation controller, made (show) segues directly to my View Controller (which is on screenshot). This automatically created navigation bar and last thing I did was that I put navigation item in it so now my code pop right navigationController. Hope that it's understandable.
I have couple ideas:
Your navigationController equal to 'nil' and .popViewControllerAnimated will never invoked. This may happen if you are using UITabBarController. In this case try to use self.tabBarController?.navigationController instead of self.navigationController.
Your controller presented 'Modally'. In this case you can try to invoke navController.dismissViewControllerAnimatedinstead of navController.popViewControllerAnimated

iOS - NavigationBar Title overlapped by previous viewController

we have the issue, that if we pop back from a VC, the current ViewController's navigationBar title is overlapped by the just popped VC navBar title.
But it occurs only sometimes, so i assume it's maybe just a UI refresh bug. Did someone have this problem before, if yes.., how to fix it?
regards ..
I've run into this a few times in the app I maintain. In every case the problem was caused by people doing silly things with navigation controllers.
For example, when wishing to navigate to a new view, a view controller that was already part of a navigation controller's view stack would instantiate a new navigation controller and push its root view controller onto the first navigation controller's view stack.
Then, in the new view controller (the one contained in the second nav controller's view stack), they would try to pop to a previous view. This would cause funny animation bugs and random titles to show on the navigation bar.
The solution was to remove the second navigation controller from the flow (it didn't serve any particular purpose).

Resources