Я играл с шаблоном SplitView iPad в XCode. Вот два из многих важных методов, которые автоматически генерируются для Вас Разделением Основанный на представлении Шаблон приложений...
AppNameAppDelegate.m
#pragma mark -
#pragma mark Application lifecycle
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Override point for customization after app launch
rootViewController.managedObjectContext = self.managedObjectContext;
// Add the split view controller's view to the window and display.
[window addSubview:splitViewController.view];
[window makeKeyAndVisible];
return YES;
}
RootViewController.m
#pragma mark -
#pragma mark View lifecycle
- (void)viewDidLoad {
[super viewDidLoad];
self.clearsSelectionOnViewWillAppear = NO;
self.contentSizeForViewInPopover = CGSizeMake(320.0, 600.0);
NSError *error = nil;
if (![[self fetchedResultsController] performFetch:&error]) {
NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
abort();
}
}
Когда Вы создаете и выполняете проект прежде, чем внести любые изменения вообще, application:didFinishLaunchingWithOptions
метод называют перед RootViewController:viewDidLoad
метод называют. Я плохо знаком с разработкой iPhone, но я предполагаю, что это - корректная и типичная последовательность. Таким образом, вот изменения, я сделал...
UIViewController
(вместо UITableViewController
по умолчанию), и внес соответствующие корректировки в Интерфейсном Разработчике. Я создал и работал, все все еще хорошо работало. RootViewController:viewDidLoad
называется перед application:didFinishLaunchingWithOptions
метод. Я должен вернуть его к способу, которым это работало, прежде, потому что, как Вы видите в коде, viewDidLoad метод зависит от didFinishLauchingWithOptions метода для выполнения так его, может установить rootViewController's managedObjectContext
то, что это использует для выполнения запроса выборки.
Большое спасибо заранее для Вашей справки! Я собираюсь продолжать исследовать и играть с кодом.
В шаблонном приложении -applicationDidFinishLaunching добавляет представление RootViewController в окно, вызывая загрузку представления, поэтому очевидно, что -viewDidLoad последует за - applicationDidFinishLaunching.
ViewDidLoad (косвенно) вызывается из applicationDidFinishLaunching.
Если, как вы говорите, viewDidLoad вызывается перед applicationDidFinishLaunching, это потому, что вы сделали что-то, чтобы заставить представление загрузиться до вызова applicationDidFinishLaunching.
Вы добавили точку останова в -viewDidLoad и посмотрели на стек-трейс, чтобы увидеть, что было ответственно за его вызов?
. Где вы инициализируете RootViewController
? Обычно это делается в applicationDidFinishLaunching
(по крайней мере, на iPhone). Если вы инициализируете его в методе делегата приложения init
, это может вызвать вызов метода viewDidLoad
корневого контроллера представления перед applicationDidFinishLaunching.