Xcode'ta iPad'in SplitView şablonuyla oynuyordum. İşteNeden benim app delegate didFinishLaunchingWithOptions yöntemi tüm aniden AFTER benim RootViewController: viewDidLoad yöntemi denir?
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 ... otomatik oluşturulan bölünmüş görünüm tabanlı uygulama şablonu tarafından sizin için çok önemli yöntemlerden ikisidir
#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();
}
}
Herhangi bir değişiklik yapmadan önce projeyi oluşturup çalıştırdığınızda, yöntemi'dan önce çağrılıryöntemi denir. IPhone geliştirme konusunda yeniyim, ama bunun doğru ve tipik bir sıralama olduğunu varsayarak düşünüyorum. Yani burada yaptığım değişiklikler ... Her şeyi herhangi bir değişiklik yapmadan çalışıyordu doğrulaması ardından
- , ben RootViewController kodu değişti ve
UIViewController
(yerine varsayılan olarakUITableViewController
) bir alt sınıf olarak ayarlayın ve ilgili yapılmış Interface Builder'da ayarlamalar. İnşa ettim ve koştum, her şey hala iyi çalışıyordu. - Daha sonra, IB'de RootView'a bir UIView ekledim ve bunu oluşturup çalıştırdığım zaman,
RootViewController:viewDidLoad
anidenapplication:didFinishLaunchingWithOptions
yönteminden çağrılıyor.
seni kodda görebileceğiniz gibi, geri çünkü daha önce çalışma şeklinden bunu almak gerekir, viewDidLoad yöntemi yüzden ayarlayabilirsiniz yürütmek didFinishLauchingWithOptions yöntemine bağlıdır rootViewController en managedObjectContext
bunu gerçekleştirmek için kullandığı getirme isteği.
- Buna neden olan herhangi bir fikir var mı?
- Bunu nasıl düzeltebilirim?
Yardımlarınız için şimdiden çok teşekkürler! Araştırma yapmaya ve kodla oynamaya devam edeceğim.
Teşekkürler, eman! SplitView tabanlı uygulama şablonu, RootViewController için herhangi bir başlatma kodu üretmiyor, en azından ben hiç bir yerde göremiyorum. Bu yüzden iPad geliştirmeye yeni başladığımdan ve kendime bu noktaya kadar öğrettiğimden beri, UI'nin çoğunun yaratılmasından beri RootViewController'ın ana pencerenin nib dosyasına gömülmesi için başlatma mantığını üstleneceğim. IB, doğru mu? – BeachRunnerFred