2011-08-08 24 views
0

我需要你的幫助,也許它的東西很傻,但我找不到錯誤。 我有一個表格視圖和一個添加按鈕,當它的點擊我顯示一個小窗體的模式視圖,當按下保存按鈕時我發送數據到TableView控制器來顯示它,我也用NSUserDefaults來保存這個數據中的數據。刪除行UItableview iPhone使用userdefaults

我的問題來了,例如,我添加2個新行並刪除其中的1個,然後當我添加另一個時,它顯示我刪除的最後一行,而不是顯示剛添加的行。

我做的是保存和讀取這樣:

viewDidAppear我讀了NSUserDefaults,如果存在獲取數據。 的方法從ModalView捕獲數據,我將其保存到userdefaults。 in commitEditing方法我讀取userdefaults,然後從數組和表中刪除行,然後將此更改保存在userdefaults中。

我不知道我做錯了什麼,有人可以幫我嗎?

回答

0

在該類的viewWillAppear中使用[self.tableView reloadData];。您也可以參考這個類在其他視圖控制器,爲它創建一個對象,然後調用[classObject.tableView reloadData];

永遠記得添加操作或刪除操作後重新裝載tableView

+0

我試着把[self.tableView reloadData];在viewWillApperar但沒有工作,這是得到關於reloadData因爲當我回去再次進入tableview控制器行更新與我保存的最後一行,我的意思是它顯示一切都很好。我認爲問題只是在我添加新行並且模式被解僱的那一刻。 = S。順便說一句,感謝您的快速答案XD –

0

不要使用NSUserDefaults作爲表的直接數據源。將其存儲在中間模型中。這將是一個很容易調試的方式。

如果您在保持模型與用戶默認值同步時遇到問題,請在您更改時調用[[NSUserDefaults standardUserDefaults] synchronize]

此外,請確保您的表格單元重複使用中沒有出現錯誤。如果您有客戶UITableViewCell類,並且您沒有正確實施-prepareForReuse,則可能會看到舊數據。

+0

嗨,大衛感謝您的時間,我每次保存和關於-prepareForReuse我都沒有聽說過它調用同步方法,所以我搜索了一下,我發現它的一種方法這會重置自定義單元格的值,但我不知道必須重新生成什麼值以及何時應調用此方法。你能告訴我更多關於這件事嗎? –

+0

它不會被手動調用,它將被UITableViewCell的子類覆蓋。如果你沒有使用任何自定義的UITableViewCell子類,那麼這不是問題。如果你需要更多的幫助,你應該發佈一些代碼。 –