尝试将数据控制器分配给XCode中的UICollectionViewController时出错

时间:2012-12-04 17:16:44

标签: objective-c ios controller uicollectionview

我已经设置了一个从sqlite数据库获取数据的LibraryDataController类。这是它的.h文件:

#import <Foundation/Foundation.h>
#import <sqlite3.h>

@interface LibraryDataController : NSObject{
    sqlite3 *database;
}
@property (nonatomic) NSMutableArray *masterPhotoList;

-(NSInteger)listCount;
-(NSString*)objectInListAtIndex:(NSUInteger)index;
-(void)createEditableCopyOfDatabaseIfNeeded;
-(void)initializeDefaultList;
-(void)closeDatabase;
@end

我还有一个具有LibraryDataController成员的库视图:

#import <UIKit/UIKit.h>

@class LibraryDataController;
@interface LibraryViewController : UICollectionViewController

@property (nonatomic, strong) LibraryDataController *dataController;

@end

我的问题发生在应用程序启动时,我将信息从sqlite数据库加载到数据控制器中(init函数成功完成此操作)。然后我尝试将数据库分配给库视图。库视图是选项卡栏上的第二个视图,选项卡栏控制器是根视图。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    // Override point for customization after application launch.

    UITabBarController *tabController = (UITabBarController *)self.window.rootViewController;
    LibraryViewController *libraryView = [[tabController viewControllers] objectAtIndex:1];
    LibraryDataController *aDataController = [[LibraryDataController alloc] init];

    libraryView.dataController = aDataController;

    return YES;
 }

错误来自libraryView.dataController = aDataController;线。关于我的问题是什么的任何想法?我认为它可能与UICollectionView有关,因为我对它很新。这段代码几乎与我用UITableView成功使用的代码相同,我认为这两个视图非常相似。谢谢你的帮助。

1 个答案:

答案 0 :(得分:1)

错误消息

[UICollectionViewController setDataController:]: unrecognized selector sent to instance 0x71a5170

显示libraryView(标签栏控制器的第二个视图控制器)是UICollectionViewController的实例,而不是LibraryViewController,如您所料。

解决方案是将故事板文件中视图控制器的“自定义类”设置为“LibraryViewController”(使用“身份检查器”)。