Gram z szablonem SplitView iPada w Xcode. Oto dwie z wielu ważnych metod, które są generowane automatycznie dla Ciebie przez szablon Application Podziel widok opartego ...Dlaczego metoda didFinishLaunchingWithOptions mojego uczestnika aplikacji nagle została wywołana przez moją metodę RootViewController: viewDidLoad?
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();
}
}
Po zbudowaniu i uruchomieniu projektu przed wprowadzeniem jakichkolwiek zmian, metoda application:didFinishLaunchingWithOptions
jest wywoływana przedMetodajest wywoływana. Jestem nowy w rozwoju iPhone'a, ale zakładam, że jest to poprawna i typowa sekwencja. Więc tutaj są zmiany zrobiłem ...
- Gdy potwierdziłem wszystko działa bez żadnych modyfikacji, zmieniłem kod RootViewController i ustawić go jako podklasa
UIViewController
(zamiastUITableViewController
domyślnie) i wykonane odpowiednie korekty w konstruktorze interfejsów. Budowałem i biegałem, wszystko działało bez zarzutu. - Następnie dodałem UIView (bez niczego) do RootView w IB i kiedy zbudowałem go i uruchomiłem, nagle
RootViewController:viewDidLoad
jest wywoływany przed metodąapplication:didFinishLaunchingWithOptions
.
Muszę dostać go z powrotem do sposobu, w jaki pracował wcześniej, bo jak widać w kodzie, metoda viewDidLoad zależy od sposobu didFinishLauchingWithOptions do wykonania, dzięki czemu można go ustawić rootViewController na managedObjectContext
że używa do wykonywania żądanie pobrania.
- Jakieś pomysły, które to spowodowały?
- Jakieś pomysły, jak mogę to naprawić?
Bardzo dziękuję z góry za pomoc! Będę badał i bawił się z kodem.
Dzięki, eman! Szablon aplikacji oparty na SplitView nie generuje żadnego kodu inicjalizacyjnego dla RootViewController, przynajmniej nigdzie go nie widzę. Odkąd jestem nowy w rozwoju iPada i bazuję na tym, czego się do tej pory nauczyłem, zakładam, że logika inicjalizacji dla RootViewController jest osadzona w pliku końcówki okna głównego, ponieważ większość interfejsu została utworzona w IB, prawda? – BeachRunnerFred