I have a view hierarchy managed with UINavigationController, of the
form A -> B, where A and B are UIViewController subclasses.
When I am in the B view, I have a backBarButtonItem in the navigation
bar that will pop the application back to the A view, when selected.
The title of the backBarButtonItem was initially set in A, just before
I pushed the B view onto the navigation stack.
Assuming I am in B and I would like to change the title of the
backBarButtonItem, what is the best way to accomplish this?
Currently, I have a method in A that sets the title property value:
- (void) setBackBarButtonItemTitle:(NSString *)newTitle {
self.navigationItem.backBarButtonItem.title = newTitle;
}
When in B, I call -viewControllers to get the array of view
controllers, referencing the second to last element to call A's -
setBackBarButtonItemTitle:
NSArray *viewControllerArray = [self.navigationController
viewControllers];
int parentViewControllerIndex = [viewControllerArray count] - 2;
[[viewControllerArray objectAtIndex:parentViewControllerIndex]
setBackBarButtonItemTitle:@"New Title"];
This approach is clunky but it seems to work correctly.
However, I don't know why the following does not work, when called
within B:
[(A *)(self.navigationController.parentViewController)
setBackBarButtonItemTitle:@"New Title"];
In fact, calling any parent view methods using the
parentViewController property does not work.
Why does this second approach (using the parentViewController
property) fail to work? Am I not using this property correctly?
Thanks,
Alex
_______________________________________________
Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)
Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com
Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com
This email sent to arch...@mail-archive.com