卡尔代表问题

时间:2012-08-19 03:33:07

标签: ios delegates calendar

我认为正确设置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>

感谢一堆......我不仅仅是一个卡住了。

1 个答案:

答案 0 :(得分:0)

这是极少数情况之一,代理人应该被保留,因为它正在被释放和替换。覆盖-setDelegate:并保留您的代理人。