I have a modal view controller and a master view controller. When I open the modal view controller, everything works fine. But when I press the back button, the Master View Controller isn't loaded and loads itself immediately after the transition is done. Is there anyway I can fix this issue? Would I use prepareforsegue? A point in the right direction would be greatly appreciated!
If you're using presentModalViewController (or the storyboard equivalent) all you have to do is have the modal view controller call [self dismissModalViewControllerAnimated:YES]. The master view controller will not have been removed from memory, so no setup is necessary.
try to do everything in your viewWillApear: cause when it when modelViewController got dismiss viewWillApear: will call and load the load functionality there only :
Related
I had tried presenting a UIPopoverController on a viewWillAppear on a view presented via a modal view controller. However when doing so the UIPopoverController immediately got dismissed. Any idea why this might have happened and the right way to do so?
Don't do any view handling in -viewWillAppear, because there is no guarantee that the view has loaded. Move all implementations into -viewDidAppear for safer execution.
I have a TabBarApplication for an iPad App, which is switching between two ModalViews (LoginForm / Memberarea) in one of the Tabs by checking Loginstatus. All works fine, but when I switch to another Tab of the Application and then switch back, no modal view is shown and the view don't refresh to check for status again.
Is there any way to keep the modal view on the TabView, even if user switches to another tab?
Or is it possible to refresh the View when its tab becomes active?
Would be great if someone can help me with this problem!
EDIT: Problem solved!
I solved it on my own. =)
The problem was: After switching to another TabView the modal don't show up, but is not dismissed. There was a error in my log displaying that the modal can't be viewed.
So to solve it I used the "viewWillDissapear" method and dismiss my modalView before switching Tabs, like this:
[self dismissModalViewControllerAnimated:YES];
The Modal is dismissed, and after switching the View loads again and displays the deserved modalView. =)
Thanks for your answers.
You can do the refresh code you were talking about by implementing viewWillAppear in your view controller
Call your code which clls modalview controller in viewwillappear method.
I am using 2 views in navigation controller in a tab bar. In that First view controller in navigation should automatically call the second view controller without showing First view controller ( by pushing pushviewcontroller on viewdidAppear).
The issue is when i click on the tab bar on first time it goes to Second view controller without any showing of First view correctly . but when I press the tab bar again it show the First view with transition style(popviewcontroller).
Can anyone suggest me what i have went wrong?
Thanks in advance
Regards,
sathish
If you are using initWithNibName to create your view controllers use the viewDidLoad event instead the viewDidAppear.
just use call second view controller in -(void)ViewwillAppear:(BOOL)Animated then it not give any problem
Why would you want to do that?
Add the second view as a subview really, or if you really must put it in viewWillAppear:(BOOL)animated - but calling it every time is really inefficient. But again, why would you want to push a view controller over another view controller?! Why don't you just make the second view controller the root view controller?
Trying to fix a very strange error, i have 3 view controllers that start from the app delegate and push each other accordingly. The 3rd view controller then has a toolbar button that calls the code here:
-(void)showEventBrowser;
{
accelManeger.delegate = nil;
NSLog(#"%u",[self.navigationController.viewControllers count]);
[self.navigationController popToRootViewControllerAnimated:NO];
}
This works the first time round but when i come back to this view controller and try again. Firstly it reports that there are 3 view controllers on the stack. It then deallocs the 2nd view controller in the stack and doesnt crash but will not go any further. If i hit the button again it says there are no view controllers on the stack and fails to respond.
I have logs for all the viewdid, viewwill, e.t.c in each view controller and there appears to be no odd behaviour. Also no memory warnings from any view controllers.
Why would this work once through but not the second time ?
Well i Fixed this.
I was trying to poptorootviewcontroller from a viewcontroller that had no view but isntead just displayed a UIImagepickercontroller. Even when attempting to dissmiss this modalviewcontroller first, (even with a delay), i still had the same problem. I instead changed the viewcontroller in question to a UIMagepickercontroller subclass and handle the present and dismiss in another viewcontroller.
Lesson learnt, dont pop to root with UIImagepickercontroller modal view ontop.
Some times when I push ViewController into Navigation Controller,
the viewDidLoad() method of the View Controller is not called.
And this cause my application to crash. I would appreciate any help.
I forget to mention that I load the view from the nib before I push it to the Navigation Controller.
Thanks,
Sarah
The viewDidLoad method is only called when the view is first loaded from the Nib file. If the view was already loaded and you push the view again it will not fire again.
Depending on what you want to do, you may want to use viewWillAppear or viewDidAppear instead.
Once the View is loaded and added to the Controller's stack, you will not see this called again. You would need the view to get popped off the stack and pushed again to see it. You can always be assured viewWillAppear will get invoked everytime you return to the view. This allows you to do any housekeeping that may be in order (which i assume is the goal).