2009-09-06 24 views
1

我有一個按鈕,在TTTableView上切換setEditing。以前我一直在使用「常規」的UITableView和下面的方法來實際刪除數據,但是我沒有在Three20類中看到類似的東西,並且當按下刪除按鈕時我的方法不會被調用行。無法刪除表中的行使用Three20

  • (無效)的tableView:(UITableView的*)的tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {// 做的工作}

我必須失去了一些東西,但我無法弄清楚在哪裏。看起來像TTTableViewController中的setEditing沒有連接到任何東西。有一個didDeleteObject方法,但我不知道這是否應該替代上述方法。任何投入將不勝感激。

回答

6

您與TTTableViewController經驗也將是比你想象的,因爲它不繼承UITableViewController有點不同。與大多數iPhone教程不同,該教程的桌面視圖控制器也實現UITableViewDelegateUITableViewDataSource協議,Three20通過不同的類實現它們:您需要使用模型實例設置控制器的dataSource屬性,並且控制器創建自己的代表(在createDelegate方法,您可以覆蓋)。

要實現,tableView:commitEditingStyle:forRowAtIndexPath:的方法,是UITableViewDataSource協議的一部分,所以你將需要實現你的模型類,而不是控制器本身。

TTTableViewController不直接做任何事情與setEditing:animated:,只是從UIViewController繼承基地實施。

您看到的model:didDeleteObject:方法是從TTModelViewController繼承的,作爲TTModelDelegate協議的實現。它在那裏,以便底層數據模型的更改可以通知視圖層的更改。例如,如果您的應用程序正在從網上下載數據,那麼行可能會一直出現並消失,而與用戶界面正在進行的操作無關。如果您試圖通過用戶界面進行編輯,則不需要惹惱。

+0

這是如何使用Three20的TTModelViewController重新組織控制器的一個很好的總結。 就像你說的那樣,注意區分TTModelDelegate方法和UITableViewDataSource方法是很重要的。 如果這個答案不被接受,我可能會在這個新的答案中寫一些示例代碼。 – 2009-10-06 03:45:41