2011-03-09 122 views
0

我一直在尋找這個代碼很長一段時間我的應用程序。當用戶添加一個ALBUM時,它將它添加到RootViewController中的一個數組(listOfItems)。不同的類然後調用它來更新(reloadData)。看着雖然有些NSLogs後,它下面的reloadData被調用兩次?

  • numberOfRowsInSection更新多少行(正確)
  • cellForRowAtIndexPath顯示行(的NSLog表明LISTOFITEMS是正確的)
  • numberOfRowsInSection重複,並刪除所有新數據
  • cellForRowAtIndexPath再次重複的是,它顯示了一切,但新的數據

我不知道爲什麼它重複 - 我ONL y一次打[self.tableView reloadData];

我已經檢查了所有的NSTimers,我甚至讓應用程序在那裏坐了大約一分鐘到控制檯顯示沒有任何東西。

請幫忙! Coulton

PS:如果您需要任何代碼,請詢問!


編輯:這裏有NSLog的是怎麼回事

Number Of Rows: 3 
Array: (One, Two, Three) 

單元格文本的例子:一個 單元格文本:兩個 單元格文本:三

---添加細胞「四」---

Number of Rows: 4 
Array: (One, Two, Three, Four) 

Number of Rows: 3 
Array: (One, Two, Three) 

Cell Text: One 
Cell Text: Two 
Cell Text: Three 

編輯:全RootViewContoller.m

REMOVED 

PS:很抱歉的長碼,但再次感謝!

回答

1

不知道這是否幫助,但嘗試outcomment [super viewWillAppear:animated]viewWillAppear如果你有在你的類。這似乎是sdk的新版本中的一個錯誤。

- (void)viewWillAppear:(BOOL)animated { 
    //[super viewWillAppear:animated]; 
} 
+0

試過...仍然無法正常工作。 :( – iosfreak 2011-03-09 21:44:46

+0

也不適用於我 – 2015-03-04 15:45:41

2

CellForRowAtIndexPath會重複顯示tableview中顯示的每個單元格,更多關於放置NSLogs位置的信息。

+0

感謝您的快速響應!在帖子中查看我的更新。 – iosfreak 2011-03-09 04:22:09

+0

我沒有看到你正在放置NSLog代碼的區域(可能是一個示例代碼,說明你如何得到這些nslogs)。我不明白這些是如何造成問題的。 – wahkiz 2011-03-09 06:37:30

+0

剛剛添加了我的RootViewController.m – iosfreak 2011-03-09 21:44:23

2

在執行numberOfRowsInSection的某處添加一個斷點。當你將斷點切換到調試器視圖並查看堆棧跟蹤時。對於你得到的兩個電話都這樣做。 向下看堆棧,直到找到屬於你的方法(粗體顯示)。你應該能夠找出你在呼叫reloadData

如果斷點擊中,你找不到任何你自己的方法作爲調用的來源,那麼也許你有一個NSTimer或其他的方法來調用它。

快樂調試:)

+0

添加了斷點,但該應用程序不會加載。這是不好的,因爲我稍後添加內容。 – iosfreak 2011-03-09 23:01:09

+0

即使在應用程序啓動後,您也可以添加斷點。只需啓動應用程序並獲得一個點,您認爲您已接近加載所提及的數據。然後轉到XCode,添加斷點並繼續使用該應用程序,直到您到達斷點。這樣你就不會卡在每個reloadData的每個屏幕上。更酷的方法是使用條件斷點。我從來沒有用過它們,所以我無法幫助你,但我知道它們存在:只有滿足條件才觸發的斷點。 – 2011-03-10 10:16:28

-1

如果其他人有這個問題,只需使用NSTimer每X秒重新加載一次數據。我甚至在ARAAY上做了一個小小的計數器,它填充表中當前的數據和ROWS以查看是否有必要更新。如果不是,它什麼也不做。