July 22nd, 2009 § Comments Off on Another UITabBarController change from 2.x to 3.0 § permalink
Or actually with UITabBarControllerDelegate, and specifically, with the method tabBarController:didSelectViewController:.
According to the docs, the differences:
OS |
called only when tab changes? |
called when changed programmatically? |
before OS 3.0 |
YES |
YES |
OS 3.0 and later |
NO |
NO |
If you are writing code that runs on both 2.x and 3.0 that needs to get tricky with tabs, these changes are a nuisance.
Even more infuriating is that the Apple documentation isn’t complete. The section ends with the sentence fragment “If you are implementing….” Yes? If I am implementing what? And what do I do if I am?
Yes, I’ve already reported documentation error. No response though. My guess is they’ll just remove the sentence fragment instead of expanding on it :(
[edited: I made a mistake in the table the first time I posted this. Should be fixed now.]
June 29th, 2009 § § permalink
This is just a short note about a change I discovered between iPhone OS 2.x and 3.0. It’s not very interesting or exciting but I thought I’d record it in the off chance that it helps someone else.
When the user switches tabs on a UITabBarController
in iPhone OS 2.x, the sequence of events is:
-
UIView
of new tab gets added as a subview
-
UIView
of old tab gets removed
- The delegate’s
tabBarController:didSelectViewController:
method is called
Run the same code on iPhone OS 3.0, however, and the sequence is this:
-
UIView
of new tab gets added as a subview
- The delegate’s
tabBarController:didSelectViewController:
method is called
-
UIView
of old tab gets removed (sometime later, I think it’s invoked via one of NSObject
‘s performSelector:
methods)
This is a inconsequential change for most, but it might make a difference if you are checking the UIView
s’ superview
variables in your tab bar controller delegate method.