Re: [問題] 切換畫面的問題

看板MacDev作者 (zonble)時間13年前 (2010/11/02 03:49), 編輯推噓1(102)
留言3則, 1人參與, 最新討論串2/2 (看更多)
※ 引述《shiftsmart (居家物)》之銘言: : 現在我正在學習view的切換 : 已經可以成功的切換view了 你這段 code 的問題很大: - (IBAction)goTospoton:(id)sender { SpotOnViewController *chang = [[SpotOnViewController alloc] init]; UIViewController *a=[[UIViewController alloc]init]; a.view=self.view; [a release]; self.view=chang.view; } 每次點一下按鈕,就會生一個新的 SpotOnViewController, 然後 chang 這個物件都沒有釋放掉,多點個幾次按鈕,就會 記憶體漏水漏不停。 而且,ViewController 的功能就是負責管理 View,要進入到 另外一個畫面,可以用 navigation controller 等方法,把 當前的內容換成是另外一個 View Controller 的 view,但是 你現在的作法卻是不斷把同一個 view controller 的 view 物件換掉,這樣會讓 View Controller 無法管理 View。 因此,實際上應用程式的行為也會不對,當你按下返回主畫面 的按鈕的時候,遊戲裡頭的那些東西還是會繼續跑,而且會跑 出一堆 GameOver 的 UIAlerView。 : 但是切成功了是切成功了 : 卻不能點擊 : 感覺好像是圖層之間的問題~ 你負責處理 touch 事件的程式是 touchesBegan:withEvent:, 這個東西來自 UIResponder,習慣上,通常會實作在 View,而 不是 View controller 裡頭,然後用 delegate 來處理。這樣 MVC 的關係也才會比較清楚。 UIViewController 也繼承自 UIResponder,照理說如果沒有別 人攔截 touch 事件,而這個物件也在responder chain 上,就 應該要把事件傳給你的 UIViewController subclass。但問題是, 你切換 view 的方法是直接修改 changview2ViewController 的 sel.view,所以,responder chain 上,還是 changview2ViewController 而不是 SpotOnViewController,所以事件根本就沒傳進來。 -- zonble.net cocoa.zonble.net -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.42.179.249

11/03 16:24, , 1F
感謝解答!!
11/03 16:24, 1F

11/03 23:58, , 2F
我已經成功的把view給切換了!
11/03 23:58, 2F

11/03 23:58, , 3F
navigation controller意外的好用!
11/03 23:58, 3F
文章代碼(AID): #1Cpncyl2 (MacDev)
文章代碼(AID): #1Cpncyl2 (MacDev)