2011-12-12 37 views
1

我已經編寫了一些基本應用程序,將一些textviews放到外部屏幕上。然後,用戶可以鍵入消息顯示在這些視圖中,並決定哪些視圖是可編輯的。iOS - 可編輯子視圖(TextViews,標籤等)返回null

但是,每當我運行時檢查視圖是否可編輯,它總是返回null。

代碼如下:

 UITextView *lbl = (UITextView *) [view.subviews objectAtIndex:outputCount]; 

如果我不投LBL到的UITextView,我運行時得到空:

if(lbl.editable) 

如果我不投它,我得到一個EXC_BAD_ACCESS,有沒有人有什麼想法可能是錯誤?

乾杯傢伙!

編輯:一直在玩它,我認爲不好的訪問是因爲它返回null,因此如果失敗。我可以把它打印出來。儘管可編輯值如何爲空?這肯定是錯誤或真實的。如果我將視圖加載到iPad並觸摸其可編輯字段設置爲false的textview,它確實知道。那麼它在哪裏發現了?

謝謝!

+0

爲什麼使用子視圖數組中的特定項目而不是插座? – jrturton

+0

我只使用接口生成器的網點,並以編程方式創建視圖,這會工作嗎?如果是這樣,怎麼樣? –

+1

如果您在代碼中創建視圖,最好爲每個需要稍後參考的子視圖保留一個實例變量。我懷疑這裏發生的事情是,subviews數組不包含你認爲它包含。 – jrturton

回答

0

您的代碼段沒有指定outputCount來自哪裏,但看起來可能是這個問題。如果您的視圖有4個子視圖,並且您嘗試引用objectAtIndex:4,您將得到一個空值。也許你的代碼應該改爲[view.subviews objectAtIndex:[outputCount - 1]]。再次,目前還不清楚outputCount來自你的代碼。

+0

抱歉,輸出計數在之前設置,如果outputcount大於子視圖的數量,則將其設置爲零。對不起,完全忘了澄清! –

+0

你可能已經覆蓋了這個,但是你需要outputCount不大於子視圖的數量減一個。 – MusiGenesis

+0

對,謝謝。 –

1

所以,我更改爲使用一個UILabel和設置的代碼,如果檢查:

if(lbl.enabled == YES) 

而且它似乎是運行像一個夢想,但現在我需要從變灰,當它停止場沒有啓用,我相信在這一天結束之前我會問這個問題。

感謝您的幫助!

+0

應該值得注意的是,這也可以用於UILabel,看起來enabled/editable變量是以某種奇怪的方式返回的,但是if語句被調用,只要您確保啓用的值等於YES –