0

Ok。大きな問題があります。最近、Cocoapods を使用して FRLayeredNavigationController をダウンロードました。それを使用して単純に使用する前はUINavigationController、すべて正常に機能していました。今はただの大きな混乱です。これは、アプリケーションを実行した後のものです。 ここに画像の説明を入力

これは私のコードです: AppDelegate.h

#import <UIKit/UIKit.h>
#import "FRLayeredNavigationController/FRLayeredNavigation.h"
@interface TasksAppDelegate : UIResponder <UIApplicationDelegate>

@property (readonly, strong, nonatomic) NSManagedObjectContext *managedObjectContext;
@property (readonly, strong, nonatomic) NSManagedObjectModel *managedObjectModel;
@property (readonly, strong, nonatomic) NSPersistentStoreCoordinator *persistentStoreCoordinator;

- (void)saveContext;
- (NSURL *)applicationDocumentsDirectory;

@property (strong, nonatomic) UINavigationController *navigationController;
@property (strong, nonatomic) FRLayeredNavigationController *layeredNavigationController;
@property (strong, nonatomic) UIWindow *window;
@end

AppDelegate.m

    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    // Override point for customization after application launch.

    ToDoTableViewController *tableViewController = [[ToDoTableViewController alloc]init];
    self.layeredNavigationController = [[FRLayeredNavigationController alloc]initWithRootViewController:tableViewController];
    tableViewController.managedObjectContext = self.managedObjectContext;
    self.window.rootViewController = self.layeredNavigationController;
    self.window.backgroundColor = [UIColor whiteColor];

    [self.window makeKeyAndVisible];

私のコンソールでは、次のようになっています。

DEBUG: self: 'ToDoTableViewController: 0x9537600', self.parentViewController: '(null)'

したがって、基本的に私が言えることは、何らかの理由FRLayeredNavigationControllerで が作成されていないか、管理オブジェクト コンテキストが作成されていないということです。理由がわかりません。文字通り、 を に変更するFRLayeredNavigationControllerUINavigationController、すべて正常に動作します >.>

違いがある場合TableViewControllerUITableViewController、ではなく、そのUIViewController中に tableView があります。

4

2 に答える 2

0

ブレークポイントが原因で: Xcode でランダムなブレークポイントを確認してください: Xcode で押し⌘+6て、すべてのブレークポイントを表示します。ただし、ログ メッセージはFRLayeredNavigationControllerの既知の制限から来ています。ビュー コントローラ (または) が実際に画面にプッシュされるまで、 self.layeredNavigationItem(または)を使用することはできません。someViewController.layeredNavigationItemselfsomeViewController

FRLayeredNavigationController のドキュメントにlayeredNavigationItemは、次のことが記載されています。

警告: ビュー コントローラが画面に表示されるまで、このプロパティは nil です。画面に表示される前に FRLayeredNavigationItem を構成するには、次のメソッドを使用します。

[FRLayeredNavigationController initWithRootViewController:構成:] [FRLayeredNavigationController pushViewController:inFrontOf:maximumWidth:animated:構成:]

その理由 (私は FRLayeredNavigationController の開発者です) はlayeredNavigationItem、View Controller 階層をウォークすることによって実装され、View Controller がプッシュされる前に、まったく階層にないためです。したがって、parentViewControllerですnil

于 2013-08-10T13:06:27.650 に答える