我认为正确设置KalViewController的委托 - 复制Holiday& NativeCal演示 - 但我不能因为当我点击日期单元格时出现以下错误:
-[UINavigationButton didSelectDate:]: unrecognized selector sent to instance
当我在All Exceptions上设置断点时,我发现它在此函数中的KalGridView.m中引发异常:
- (void)setSelectedTile:(KalTileView *)tile
{
if (selectedTile != tile) {
selectedTile.selected = NO;
selectedTile = [tile retain];
tile.selected = YES;
[delegate didSelectDate:tile.date]; // exception raised here
}
}
这是我设置委托的代码(几乎从演示代码中复制):
- (void) viewDidLoad
{
KalViewController *calendar = [[KalViewController alloc] init];
calendar.delegate = self;
[[self.view viewWithTag:1] addSubview:calendar.view];
....}
错误是有道理的,因为我将委托设置为我自己的ViewController,它没有实现didSelectDate。另一方面,在KalViewController的委托中设置的Holiday和NativeCal类也都没有,这两个类都是
类型NSObject <UIApplicationDelegate, UITableViewDelegate>
感谢一堆......我不仅仅是一个卡住了。
答案 0 :(得分:0)
这是极少数情况之一,代理人应该被保留,因为它正在被释放和替换。覆盖-setDelegate:
并保留您的代理人。