0

我正在尝试使用来自 GitHub 的 Leaves 示例代码在按下 UIButton 时显示 pdf 文件,但是在执行项目时它给出了错误

由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:[LeavesCache setDataSource:]:无法识别的选择器发送到实例

添加了异常断点,发现问题出在这一行

来自 LeavesView.m

pageCache = [[LeavesCache alloc] initWithPageSize:self.bounds.size];

 - (void) initialize {
backgroundRendering = NO;
pageCache = [[LeavesCache alloc] initWithPageSize:self.bounds.size];
   }

来自 LeavesCache.m

- (id) initWithPageSize:(CGSize)aPageSize
{
if (self = [super init]) {
pageSize = aPageSize;
pageCache = [[NSMutableDictionary alloc] init];
}
return self;
}

来自 LeavesView.m

- (void) setDataSource:(id<LeavesViewDataSource>)value {
pageCache.dataSource = value;
  }

不同之处在于 Leaves 项目使用的是 Tableviewcontroller,但我使用的是带有故事板 segue 的集合视图控制器。在 detailviewcontroller 中有一个 uibutton,当它被按下时会显示 pdf 文件。但是当按下那个 uibutton 时它给出了错误。

感谢帮助。

4

1 回答 1

1

如果您的集合视图控制器没有数据源,那么您根本不需要调用它。dataSource 所做的只是告诉您的类在哪里查找数据。您的错误是 LeavesCache 中没有 dataSource 属性,而您正在尝试设置一个。

于 2013-06-17T17:03:11.617 回答