用于UITableView的QuickDialog和NSFetchedResultsController

时间:2012-10-13 05:44:32

标签: ios xcode core-data quickdialog

我确信这是一个愚蠢的问题,但不幸的是,我很多人都是一个菜鸟(好吧,现在也许不那么多了哈哈......)。

反正...

我有一个包含UITableView的现有项目,该项目通过我自己的类(MyListTableViewController)填充。该类当前是一个基本上设置NSFetchedResultsController的对象的子类。

考虑到这个事实,我读过的示例和文档总是显示需要子类化QuickDialogController才能访问QuickDialog功能,因为它基本上是UIViewController的子类,只是它的核心。

问题是我无法弄清楚如何允许将QuickDialogController和NSFetchedResultsController类同时用于同一个UITableView / Instance ......

NSFetchedResultsController正在被子类化,因为它充当UITableView的委托,也因为它监视所有UITableView事件等等...我确定最清楚的事情......问题是我可以看到QuickDialogController也想充当UIView的委托(我们的UITableView已经是子类)

所以,这让我觉得它会爆炸,因为我试图理解如何让这两个物体在同一个系列中很好地融合......

由于我的应用程序与核心数据紧密耦合,我需要此功能,但我想要QuickDialog的强大功能和美感。

那么 - 是否有一种方法可以将QuickDialogController子类化,然后将NSFetchedResultsController用作它的一种委托,反之亦然?

再次,抱歉,如果这是一个愚蠢/ noob问题...仍在学习,但想要做到这一点......

示例(当前)子类布局我用于UITableViewController ...

MyListTableViewController.h

#import <UIKit/UIKit.h>
#import "CoreDataTableViewController.h"

@interface MyListTableViewController : CoreDataTableViewController

CoreDataTableViewController.h

#import <UIKit/UIKit.h>
#import <CoreData/CoreData.h>

@interface CoreDataTableViewController : UITableViewController <NSFetchedResultsControllerDelegate>

@property (strong, nonatomic) NSFetchedResultsController *fetchedResultsController;
@property (nonatomic) BOOL suspendAutomaticTrackingOfChangesInManagedObjectContext;

-(void)performFetch;
@end

这里可能有另一个问题: 是否可以使用QuickDialog操作而无需继承QuickDialogController。如果是这样的话 - 这样做有什么意义,(最重要的)是一个小例子?我只是创建一个2的分配实例吗?

我提前道歉,因为我的问题可能会引发任何无知......

1 个答案:

答案 0 :(得分:1)

你想要做的是不可能的。 ObjC不允许多重继承,这是你想要做的。即使它确实如此,你仍然会遇到现在核心数据dataSource / delegate和QuickDialog数据源/委托同时工作的问题。

您需要以某种方式决定: 1 - 从QuickDialog控制器继承,然后添加逻辑以从CoreData获取数据并自己加载到Root元素(并且不使用CoreDataTableViewController)或.. 2 - 继承自CoreDataTableViewController,并在您的类上手动创建QuickDialogTableView及其数据源/委托。

关于#2,没有为这种用法创建QD,恕我直言。您可以更好地使用选项1并将CoreData数据加载到外部类,然后可以将其加载到Root元素中。但是,如果你有数百/数千行,我就不会使用QD。