I have a UINavigationController
that I reuse to push photos and comments looping over each other through the navigation controller.
In my MyViewController.h
:
@property (nonatomic, strong) NSMutableAttributedString *pLabel;
In my MyViewController.m
:
- (void) viewWillDisappear:(BOOL)animated
{
if ([self.navigationController.viewControllers indexOfObject:self] == NSNotFound)
{
// A photo function gets the right label
_pLabel = // function gets correct label I want
}
[super viewWillDisappear:animated];
}
- (void)viewWillAppear:(BOOL)animated
{
_pLabel = // is already set
}
I click on MyViewController once and set mvc.pLabel = @"1st one"
. Then I click a button to create a new MyViewController and set mvc.pLabel = @"2nd";
Then when I click the Back button viewWillDisappear
gets called and my dictionary sets pLabel = @"1st"
. Then viewWillAppear
gets run to show the first navigation controller view and pLabel = @"2nd";
Why isn't viewWillDisappear
not saving the pLabel?
Thanks.
Your property is bound to 1 instance of
MyViewController
so when you pop your second view controller you'll set the property of theMyViewController
that will disappear and not to the one that'll become visible.If you don't keep a reference on the
MyViewController
that disappears there are no reason to update one of its label, since you'll probably show a fresh new instance ofMyViewController
next time.