這個類很簡單,基本上就是pushViewController和popViewController這樣兩個方法是常用的。
這裡要講的是可能很容易被忽略的。
首先,使用[UINavigationController alloc] initWithRootViewController:rootvc]. rootvc會在navigationController這樣一個屬性訪問UINavigationController的執行個體,但是,它並不retain。所以,如果你遵循記憶體管理法則,誰建立,誰release,就會遇到一個讓你非常糾結的問題,後面的所有push調用都會失效。即類似如下代碼:
RootViewController * viewcontroller = [[RootViewcontroller alloc] initWithNibName:nil bundle:[NSundle mainBundle]];UINavigationController * nav=[[UINavigationController alloc] initWithRootViewConroller:viewcontroller];[nav release];//這句話會導致所有的push操作失效
解決辦法就是建立一個屬性來retain這個nav即可。這一點顯然違反了一般的記憶體管理原則。不知道當初設計的時候是怎麼玩的。
最後記錄一下相關的視圖幾何元素(到iphone4/4S應該都相應的變了):
1. 狀態列高度:20,有通話的時候40.
2. NavigationController導覽列高度44,橫屏的時候32.
3. Tabbar,48,
4. toolbars,44。
5. 鍵盤。一般來說是320x216,橫屏的時候是480x162.不過這個做不得准,可以通過回調來擷取。
6. 一般來說,button,label,textfield至少需要30個像素高來正常顯示文字。(預設字型)。