作者Piceman (派斯面)
看板MacDev
标题Re: [问题] 两个class之间互动问题
时间Wed Jun 19 14:30:47 2013
: GameViewController是我主要元件的class
: dragView是拖曳图片动作的class
: /*dragView*/
: - (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event{
: BOOL find = NO;
: GameViewController *ccc =[[GameViewController alloc] init];
这边 init 了一个GameViewController ccc (称为ccc_A)
: for (UIImageView *view in [[self superview] subviews]) {
: if (view.tag != -1 && CGRectIntersectsRect(dragView.frame, view.frame))
: [view setBackgroundColor:[UIColor clearColor]];
: [dragView removeFromSuperview];
: [ccc setScoreLabel];//设定计分板
这边让 ccc_A 执行方法
: find = YES;
: }
: }
: if (!find) {
: [self returnAnimation];
: }
: }
: /*GameViewController*/
: - (void)setScoreLabel{
: score += 100;//有执行到这一行 (称为 line_X
这只能说明有"一个" GameVC 物件执行了这段方法(我猜是ccc_A)
: ScoreLabel.text = [NSString stringWithFormat:@"%d",score];//却没执行这一行
: }
问题在於,ccc_A 是你画面上的那一个 GameViewController (假设是ccc_O) 吗?
ccc_A 执行了 line_X, 改变了 ccc_A 自己的ScoreLabel 内容
但是 ccc_A 并不是你画面上的那一个 ccc_O
我猜这是为何你会觉得 明明 line_X 有执行到
但是 ccc_O 的内容没有改变的原因
因为 dragView 一直init 新的 ccc, 每个 ccc都会执行 line_X
改变自己的 ScoreLabel
然後就....没有然後了 XD
所以大家才会问你 reference 到哪一个之类的问题
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 60.251.20.53
1F:→ charlesdc:我觉得问题可能不只这个~~XD 看他有没有要给source code 06/19 14:49
2F:推 m87145999:抱歉,我等等上传code。 06/19 14:54
4F:→ m87145999:连结怪怪的= = 我文章後面有新增网址 06/19 15:18
5F:→ charlesdc:结果就是就跟大家说的一样 你应该设计成delegate 06/19 15:35
6F:→ Piceman:同上,你的问题已经有答案,但是解法需要你加入delegate 06/19 15:35
7F:→ charlesdc:当picDrag进垃圾筒的时候传给gameVC才去更新ScoreLabel 06/19 15:36
8F:推 m87145999:好的 我在去研究delegate使用的方法 感谢解答~ 06/19 15:36
9F:→ charlesdc:其实还有很多大大小小的问题...... 再加油吧! 06/19 15:38
10F:→ charlesdc:然後exit(0); 这东西要上架的话不能使用 06/19 15:39
11F:推 m87145999:为什麽上架时不能使用?虽然这程式我没打算上架只是练习 06/19 15:41
12F:→ charlesdc:你往前爬一下文会有讨论 这是开发文件上定义的 06/19 15:51
13F:→ m87145999:了解,感谢大大们解答! 06/19 15:56
14F:推 HellCloud:本篇正解~用delegate或是notificationCenter应该都可以 06/19 16:44