1

私はこれを機能させるのに苦労してきました。スライド メニューとテーブル ビュー (データ付き) の両方を同時に動作させることができないようです。どちらかしか手に入りません。

この問題は、AppDelegate にあると思います。影響を受けるセクションは次のとおりです。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:  (NSDictionary *)launchOptions {

self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];

UIStoryboard *countryStoryboard = [UIStoryboard storyboardWithName:@"Country" bundle:nil];
UINavigationController *navigationController = [countryStoryboard instantiateInitialViewController];
MetallurgyMasterViewController *countryViewController = (MetallurgyMasterViewController *)navigationController.topViewController;

__managedObjectContext = self.managedObjectContext;
countryViewController.managedObjectContext = self.managedObjectContext;
[Country importDataToMoc:self.managedObjectContext];

self.window.rootViewController = navigationController;
self.window.backgroundColor = [UIColor whiteColor];
[self.window makeKeyAndVisible];

return YES;
}

私のTableViewControllerの関連セクションは次のとおりです。

- (NSFetchedResultsController *)fetchedResultsController {
if (_fetchedResultsController != nil)
{
    return _fetchedResultsController;
}

NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSLog(@"The value of managedObjectContext is %@", self.managedObjectContext);
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Country" inManagedObjectContext:self.managedObjectContext];
[fetchRequest setEntity:entity];

NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"name" ascending:YES];
NSArray *sortDescriptors = [NSArray arrayWithObjects:sortDescriptor, nil];
[fetchRequest setSortDescriptors:sortDescriptors];

NSFetchedResultsController *frc = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest
                                                                      managedObjectContext:self.managedObjectContext 
                                                                        sectionNameKeyPath:@"sectionTitle"
                                                                                 cacheName:@"Country"];
frc.delegate = self;
self.fetchedResultsController = frc;

NSError *error = nil;
if (![self.fetchedResultsController performFetch:&error])
{
    NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
}

return _fetchedResultsController;
}    

上記のセットアップでは、テーブルは正常に動作しますが、スライド メニューを呼び出すことができないようです。

AppDelegate で次の行を置き換えるとします。

UINavigationController *navigationController = [countryStoryboard instantiateInitialViewController];

為に

UINavigationController *navigationController = [countryStoryboard instantiateViewControllerWithIdentifier:@"startView"];

私のTableViewControllerのNSFetchedResultsControllerメソッドをコメントアウトすると、スライドメニューは正常に機能しますが、テーブルビューにはデータが取り込まれません(データがない理由を理解しています)。コメントアウトしないと、managedObject は NIL になり、エラーがスローされます。

単純かもしれませんが、私はこれをあまりにも長く見てきたと思います。

4

0 に答える 0