gpt4 book ai didi

ios - 我如何告诉我的 ViewController 一个 View 被触摸了?

转载 作者:行者123 更新时间:2023-11-28 22:14:04 25 4
gpt4 key购买 nike

我正在学习斯坦福 iOS 类(class),并且有一些设计问题。在类里面,我们正在制作一个纸牌配对游戏,屏幕上大约有 20 张纸牌。我最近制作了卡片 UIViews 这样我就可以正确地绘制它们。

我给了他们每个人一个方法tap,它将把faceUp 换成YES/NO,从而翻转卡片。我将手势识别器添加到我的 ViewController 中的每个手势识别器并且它可以工作。单张卡片知道它们何时被触摸和翻转。

但是,我需要在我的 ViewController 中知道 cardView 已被触摸……以及是哪一个。

我必须如何/用什么方法来做到这一点?我可以在我的 View 中广播 ViewController 将监听的内容吗?我可以让我的 viewController 处理点击(但如果我这样做,有没有办法获得发送 View ?)如果这真的很基础,我深表歉意,但我是 iOS 的新手,不想通过修补和实现来学习损坏的 MVC 模式。

编辑:仅供引用,这是我的最终实现。

每个 CardView 上都有一个点击识别器。当识别出点击时,它会调用:

- (void)cardTapped:(UIGestureRecognizer *)gesture
{
UIView *view = [gesture view]; // This method is what I was looking for.
if ([view isKindOfClass:[PlayingCardView class]]) {
PlayingCardView *playingCardView = (PlayingCardView *)view;
[playingCardView flip]; // flips card
// Game code
if (!self.game.hasStarted) {
[self startGame];
}
int cardIndex = [self.cardViews indexOfObject:playingCardView];
[self.game chooseCardAtIndex:cardIndex];
[self updateUI];
}
}

最佳答案

tag 属性会告诉您哪个 View 被点击了。在创建 View 时设置正确的标记,在点击时触发的操作方法中,您可以调用委托(delegate)方法,该方法将通知您的委托(delegate)人点击了哪个 View 。让您的 View Controller 具有委托(delegate),它将收到通知。

// your target method will look like this:
- (void) didTap:(id)sender {

//... your code that handle flipping the card

[self.delegate didTapOnCard:self]; // where delegate is your view controller

}

关于ios - 我如何告诉我的 ViewController 一个 View 被触摸了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22202863/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com