2012-07-17 87 views
4

我有一個奇怪的行爲與函數viewWithTag。 我的故事板看起來是這樣的:viewWithTag return self

 
-viewController 
--UIScrollView1 (should be a UIView but not changing yet) 
---Object with tag 1 to 11 
---Some other object with tag 0 
--UIScrollView2 (should be a UIView but not changing yet) 
---Object with tag 1 to 11 
---Some other object with tag 0 
我的代碼,我做[UIScrollView1 wiewWithTag:(1到11)](每次投出爲好物體並且它工作得很好) 我做了與UIScrollView2相同的操作,但viewWithTag每次都返回UIScrollView2,所以我從來沒有匹配任何標記的對象。

只是爲了調試的目的,我不做UIScrollView2更新,並嘗試更新與其他值UIScrollView1,並且它返回UIScrollView1僅用於一個對象,UIImageView(只有一個)。 但同樣所有的UILabel做工精細。

是否有人有一些線索,以幫助我嗎?

PS:標籤的對象被選中像10次,我使用的功能,如: - (無效)updateWithScroll:(UIScrollView中*)myScroll 所以它的一樣的1或2 :(

由於在提前,
Damien

+0

在ios8中有相同的行爲,我不知道爲什麼發生。我使用相同的方法來創建一些視圖,第一次運行正常,下一次崩潰 – htafoya 2015-04-10 19:34:59

回答

0

我假設UIScrollView2的標籤是0,所以標籤0的第一個視圖是你的UIScrollView2本身。

您可能應該爲您的UIScrollView2的每個子視圖提供不同的標記,並且始終與UIScrollView2的標記不同。

例如,你可以爲你的scrollView的標籤保留0,爲它的子視圖保留1,2,3 ...。

+0

感謝您的答覆。我正在等待答案,並在最終設計更改,並不需要再使用它。但有趣的答案,我會嘗試,但如果你已經有一個對象,不管它在UIScrollView1上,標籤爲1,你就不能創建'[UIScrollView2 wiewWithTag:1]'? – Dam 2014-01-07 15:57:57

1

嘗試自行瀏覽子視圖,快速列舉subviews或另一個循環。

我遇到了同樣的問題,但我沒有想到這種行爲,但我有選擇不保留根視圖標記並將其設置爲-1,這是一個從未使用過的值。

+1

所以解決方案將在子視圖數組中循環並檢查每個標籤,直到找到好的標籤爲止?我想應該是viewWithTag做什麼。我的代碼變化很大,所以我不能儘快嘗試,但聽起來是一個很好的解決方案。 – Dam 2014-04-08 16:00:03