2015-06-20 35 views
0

我有一個功能包括下面的行:viewWithTag不加載文本對視圖

var chanceLabel : UILabel? = self.view.viewWithTag(uni_tag) as? UILabel 

我的故事板被構造爲這樣,其中TableViewController是一個視圖控制器的子視圖。

每個機會標籤都被標記,這樣如果某個人的GPA具有一定的級別,它將返回一個字符串來顯示每個大學的入學機會。你可以看到例如伯克利,這是「不太可能」

storyboard structure

的目標是有根據的GPA動態更新的標籤。我把函數「viewDidAppear」之內,它的作用是明顯的標籤 - 這僅是倍以上的大學 - 儘管我喂字符串成其爲這樣的:

chanceLabel?.text = "High" 

我使用XCode 6.1.1,目前無法更新,因爲這是我大學項目的一部分。有什麼想法嗎?

override func viewDidLayoutSubviews() 

失敗的原因是,因爲TableViewController是利用「viewDidAppear」主視圖(視圖控制器)的一個子視圖,並且只集中在主:

+0

那麼,這有什麼問題? – Sulthan

+0

嘗試在控制檯中打印chanceLabel?.text以查看是否正確地獲取了來自self.view.viewWithTag(uni_tag)的任何視圖。 –

+0

@ MAbdulSami日誌顯示如下:https://www.dropbox.com/s/vxkyoq90ykk8u8v/Screenshot%202015-06-20%2016.29.51.png?dl=0你可以看到一些是零,一些有值,這是相當有趣 – Adib

回答

0

通過將標記成問題解決了視圖的框架。然而,viewDidLayoutSubviews是故事板設計的更好解決方案。

1

根據數據和委託動態加載表格單元格。最重要的是,延遲加載不會讓任何東西加載直到被調用。我認爲你的答案是需要閱讀視圖並查看控制器編程指南,以便理解你的觀點爲何爲零。如果tableView加載了所有的視圖,那麼代碼就可以很好地工作,但是你沒有等待它,這不是如何向表中添加數據。

如果您改變視覺狀態而不是使用表格內的代表,蘋果將會崩潰您的程序,通過中心點將單元格移動得太低或太高以找出答案。

我知道,在這裏我有點苛刻,但我不希望你們想到蘋果公司認爲蘋果公司破產的時候,它會導致代碼味道,讓它在未來變得很難。