使用init
可能工作,但我會推薦一個簡單的子類UINavigationController
。創建一個名爲setRootTableViewController:(UITableViewController *)controller
的新方法,或者類似的東西。在方法的實現調用此:
[controller.tableView reloadData];
[self pushViewController:controller animated:NO];
reloadData
會打電話給你所有的委託和數據源的方法,並用它們來更新表。如果您希望在您的表視圖控制器上調用特殊的方法,則可以將方法聲明更改爲setRootTableViewController:(CustomTableViewController *)controller
(或任何您的自定義表控制器稱爲),並將reloadData
行替換爲調用該方法的行。
然後,在您的應用程序委託中,而不是創建UINavigationController
並添加您的自定義視圖控制器,創建其中一個,然後調用此方法添加第一個視圖。
但是,如果您使用的是筆尖設置rootViewController
,你可以只覆蓋initWithRootViewController:(UIViewController *)controller
,因爲我想象那是什麼筆尖將調用設置第一個視圖中的堆棧:
- (id)initWithRootViewController:(UIViewController *)rootViewController {
if ((self = [super init])) {
[(CustomController *)rootViewController doSomethingSpecial];
[self pushViewController:rootViewController];
}
}
希望這有助於!
也在一個4。0+環境下,應用程序可能會在後臺進入後臺幾個小時纔會回到前臺,您可能需要注意並重新載入緩存 - 也許您應該在重新載入時設置一個時間戳,並根據該值決定 – bshirley