我确信这是一个愚蠢的问题,但不幸的是,我很多人都是一个菜鸟(好吧,现在也许不那么多了哈哈......)。
反正...
我有一个包含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的分配实例吗?
我提前道歉,因为我的问题可能会引发任何无知......
答案 0 :(得分:1)
你想要做的是不可能的。 ObjC不允许多重继承,这是你想要做的。即使它确实如此,你仍然会遇到现在核心数据dataSource / delegate和QuickDialog数据源/委托同时工作的问题。
您需要以某种方式决定: 1 - 从QuickDialog控制器继承,然后添加逻辑以从CoreData获取数据并自己加载到Root元素(并且不使用CoreDataTableViewController)或.. 2 - 继承自CoreDataTableViewController,并在您的类上手动创建QuickDialogTableView及其数据源/委托。
关于#2,没有为这种用法创建QD,恕我直言。您可以更好地使用选项1并将CoreData数据加载到外部类,然后可以将其加载到Root元素中。但是,如果你有数百/数千行,我就不会使用QD。