Re: [問題] 切換畫面的問題
※ 引述《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
11/03 23:58, 2F
→
11/03 23:58, , 3F
11/03 23:58, 3F
討論串 (同標題文章)