作者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
→ charlesdc:我覺得問題可能不只這個~~XD 看他有沒有要給source code 06/19 14:49
推 m87145999:抱歉,我等等上傳code。 06/19 14:54
→ m87145999:連結怪怪的= = 我文章後面有新增網址 06/19 15:18
→ charlesdc:結果就是就跟大家說的一樣 你應該設計成delegate 06/19 15:35
→ Piceman:同上,你的問題已經有答案,但是解法需要你加入delegate 06/19 15:35
→ charlesdc:當picDrag進垃圾筒的時候傳給gameVC才去更新ScoreLabel 06/19 15:36
推 m87145999:好的 我在去研究delegate使用的方法 感謝解答~ 06/19 15:36
→ charlesdc:其實還有很多大大小小的問題...... 再加油吧! 06/19 15:38
→ charlesdc:然後exit(0); 這東西要上架的話不能使用 06/19 15:39
推 m87145999:為什麼上架時不能使用?雖然這程式我沒打算上架只是練習 06/19 15:41
→ charlesdc:你往前爬一下文會有討論 這是開發文件上定義的 06/19 15:51
→ m87145999:了解,感謝大大們解答! 06/19 15:56
推 HellCloud:本篇正解~用delegate或是notificationCenter應該都可以 06/19 16:44