0

KalViewControllerのデリゲートを正しく設定すると思います-HolidayとNativeCalの両方のデモをコピーします-しかし、日付セルをクリックすると次のエラーが発生するため、そうしてはいけません。

-[UINavigationButton didSelectDate:]: unrecognized selector sent to instance 

すべての例外にブレークポイントを設定すると、次の関数の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];
....}

didSelectDateを実装していない独自のViewControllerにデリゲートを設定しているため、エラーは理にかなっています。一方、KalViewControllerのデリゲートで設定されているHolidayクラスとNativeCalクラスは、どちらもタイプが異なります。

NSObject <UIApplicationDelegate, UITableViewDelegate>

山に感謝します..私はちょっと立ち往生しているだけではありません。

4

1 に答える 1

0

これは、デリゲートが解放および置換されているため、デリゲートを保持する必要があるまれな例の1つです。-setDelegate:デリゲートをオーバーライドして保持します。

于 2012-08-21T00:14:51.397 に答える