[問題] 關於移除subview

看板MacDev作者時間12年前 (2013/04/26 00:56), 編輯推噓1(1012)
留言13則, 6人參與, 最新討論串1/1
各位好 請問我在一個single view上添加了一個新的subview 並且在subview上添加一個navigation bar 和一個 bar button 我想運用此 bar button關閉這個 subview 以下附上簡略的code @property (nonatomic, strong) UIView *subview; @property (nonatomic, strong) UIBarButtonItem *doneButton; ... { ... [self.view addSubview:self.subview]; ... self.doneButton = [[UIButtonItem alloc] initWithTitle:@"Done" style:UIBarButtonItemStylePlain target:self action:@selector(back:)]; ... } -(void)back:(id)sender { //方法1 [self.subview removeFromSuperview]; //方法2 for( UIView *view in [self.subview subviews] ) { [view removeFromSuperview]; } } 我用方法1都無法移除 subview 及上面的所有元件 而用方法2可以以除上面的元件 但是subview本身無法移除 方法2我可以理解,但是方法1為什麼無法運作 或是有什麼其他方法可以使用,再麻煩跟我說 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 219.85.8.112

04/26 01:34, , 1F
你可以把 parent 丟給 subview 去用嗎
04/26 01:34, 1F

04/26 06:51, , 2F
檢查看看 subview 的記憶體位置是否改變了
04/26 06:51, 2F

04/26 06:52, , 3F
我的測試是任一 view 不管底下有沒有其他 view 都能夠
04/26 06:52, 3F

04/26 06:52, , 4F
removeFromeSuperview
04/26 06:52, 4F

04/26 09:20, , 5F
subview給tag值去當指標來remove?
04/26 09:20, 5F

04/26 10:52, , 6F
我猜是subview只有宣告沒有實作..
04/26 10:52, 6F
感謝 darktt 我檢查之後發現真的是記憶體位置不同所引起的 檢查的結果是因為我的 subview 是由 gasturerecognizer 呼叫建立的 後來解決方法是當只有在 statebegan 時才建立 subview 其他 state 接直接 return 不做動作 這樣就可以把 subview 關掉了 目前是用這種方式解決 不知道是否還有其他方法可以運用? ※ 編輯: BFZSA 來自: 219.85.8.112 (04/27 00:21)

04/27 03:36, , 7F
我的做法會是寫一個subview的getter,裡面會去檢查subview
04/27 03:36, 7F

04/27 03:37, , 8F
是不是nil,不是的話再alloc,這樣就不會重複alloc而蓋掉
04/27 03:37, 8F

04/27 03:39, , 9F
原來的,可以參考看看,不過不確定這是不是好方法 @@"
04/27 03:39, 9F

04/28 00:45, , 10F
我也有做一個getter防止重複alloc 只是在gasturerecognizer
04/28 00:45, 10F

04/28 00:47, , 11F
運作時會一直去取用那個getter 所以我後來再加上以state來
04/28 00:47, 11F

04/28 00:49, , 12F
判斷 畢竟我需要的只有gasturerecognizer 一開始的狀態而已
04/28 00:49, 12F

04/28 00:51, , 13F
謝謝各位給的意見
04/28 00:51, 13F
文章代碼(AID): #1HUM0avS (MacDev)
文章代碼(AID): #1HUM0avS (MacDev)