0

好的。我有一个大问题。我最近使用 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,一切正常>。>

如果它有什么不同,TableViewController不是 a UITableViewController,而是 aUIViewController里面有一个 tableView。

4

2 回答 2

0

因为你的断点:也许检查 Xcode 中的随机断点:按下⌘+6Xcode 以查看所有断点。然而,日志消息来自FRLayeredNavigationController中的一个已知限制:在视图控制器 ( or ) 实际推送到屏幕上之前,您不能使用self.layeredNavigationItem(or )。someViewController.layeredNavigationItemselfsomeViewController

FRLayeredNavigationController 的文档layeredNavigationItem提到:

警告:在视图控制器显示在屏幕上之前,此属性为 nil。要在出现在屏幕上之前配置 FRLayeredNavigationItem,请使用以下方法:

[FRLayeredNavigationController initWithRootViewController:configuration:] [FRLayeredNavigationController pushViewController:inFrontOf:maximumWidth:animated:configuration:]

其原因(我是 FRLayeredNavigationController 的开发人员)是layeredNavigationItem通过遍历视图控制器层次结构来实现的,并且在推送视图控制器之前,它根本不在层次结构中。因此,parentViewControllernil

于 2013-08-10T13:06:27.650 回答
0

这里ToDoTableViewController没有生成。ManagedContext 似乎不是造成这种情况的原因。在你的ToDoTableViewController你有一个你试图访问的名为“parentViewController”的属性吗?

于 2013-08-02T04:55:05.217 回答