2013-01-11 82 views
0

努力找到我的代碼出現故障的位置。在第一次查看加載時,一切正常,並且應該正常加載,但是當我重新訪問該視圖時,似乎前兩個單元格是空的。我在viewWillAppear:中記錄了字典(dict),它記錄的數據很好,所以錯誤必須在cellForRow方法中。看看我的方法,看看我錯了什麼,第三個單元填充第三個數據,所以我完全陷入困境,但前兩個單元完全是空白的,沒有數據。JSON,cellForRowAtIndexPath錯誤

http://pastebin.com/Va84MG5g

回答

3

首先,爲什麼你做你的tableView:cellForRowAtIndexPath:方法裏面所有的瘋狂UITableViewCell定製的?創建一個自定義的UITableViewCell子類並在那裏進行設置。

在該類的initWithStyle:方法中,將所有子視圖添加爲CGRectZero,因爲在初始化時,表視圖單元格不知道它有多大。您也可以在這裏設置文本對齊,顏色等。然後,在layoutSubviews中,繼續並設置所有幀。覆蓋prepareForReuse並將您的UIImageViews設置爲零。這將有助於重複使用單元的性能。至於爲什麼你沒有在你的前兩個單元格中看到你的數據,我最初的想法是,它與你設置你的單元格重用的方式有關。如果返回的單元格是nil,您要求您的tableView將一個常規的UITableViewCell出列並僅創建所有這些子視圖。那麼當它返回UITableViewCell時會發生什麼?你跳過你分配/初始化所有這些子視圖的部分,所以你基本上什麼也沒有添加到單元格中。我覺得如果你創建一個自定義的子類,並要求你的UITableView取消,那麼,你會得到你正在尋找的結果。

注意:如果您的目標至少是iOS 5,則可以在筆尖創建UITableViewCell的佈局,然後在表格視圖中註冊筆尖。這樣做可以保證你總是得到一個出隊單元,並且你不需要做if(cell == nil)檢查。如果您的目標是iOS 6,則可以註冊UITableViewCell子類。

+0

我是新手,謝謝你的幫助!沒有太多想法如何做到這一點,你能告訴我一些示例代碼,非常感謝!非常感謝。 – rjg

+0

所有排序,工作完美!謝了哥們。 – rjg

+0

嘿,對不起,我沒有來顯示示例代碼,但我很高興你把它分類。 – jmstone617