看板 MacDev 關於我們 聯絡資訊
: 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:以下是我的code~ http://ptt.cc/SlUz 06/19 15:15
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