0

Card という名前の UIView サブクラスがあり、ボード上を移動して、スロットと呼ばれるホット スポットにドロップします。カードをドロップすると、hitTest を使用して、ホットスポットの 1 つにカードをドロップしているかどうかを判断します。そのホット スポットのプロパティを取得したいのですが、適切に機能させることができません。私の唯一の推測は、hitTest が UIView を返し、私のホット スポットが UIView サブクラスであることです。私が得るエラーは、「構造体または共用体ではないメンバー 'slotIndex' の要求」です。

これが、Card クラスから使用している TouchesEnded メソッドです。

-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent*)event { 

   UITouch *touch = [touches anyObject];   
   CGPoint location = [touch locationInView:self.superview];

   [self setUserInteractionEnabled:NO];

   UIView *backView = [self.superview hitTest:location withEvent:nil];

   if ([backView isKindOfClass:[CardSlot class]]) {
      self.center = backView.center;

      NSLog(@"Slot Number: %@", backView.slotIndex);

   } else {
      //Move it back to the top corner
      self.center = CGPointMake(50,50);
   }

   [self setUserInteractionEnabled:YES];

}

私の質問は、スロットのホット スポットにいるかどうかをテストし、そのスロット (UIView サブクラス) のプロパティを取得するにはどうすればよいですか?

4

1 に答える 1

0

コンパイラを支援するには、CardSlotが1つであると判断した後、そのポインタをCardSlotにキャストする必要があります。このようにして、コンパイラはslotIndexプロパティについて知ることができます。例えば:

if ([backView isKindOfClass:[CardSlot class]]) {
    CardSlot *cardSlot = (CardSlot *)backView;
    // From here you can access cardSlot.slotIndex
}
于 2010-08-30T14:35:22.310 に答える